현재 PHP 8에는 3 개의 새로운 문자열 함수가 포함되어 있습니다.
이 3 개의 함수는 기존의 내장 함수로는 아직 달성 할 수 없는 기능을 소개하지 않지만 보다 직관적입니다.
https://compiledconcepts.com/software-engineering/new-string-functions-in-php-8/
함수들
str_contains ( string $haystack , string $needle ) : bool
str_contains 함수를 사용하면 한 문자열이 다른 문자열에 포함되어 있는지 확인할 수 있습니다. 예를 들면 다음과 같습니다.
php > var_dump(str_contains("abc", "b"));
bool(true)
php > var_dump(str_contains("abc", "z"));
bool(false)
역사적으로 이것은 strpos 함수를 사용하여 달성 할 수 있었습니다. strpos는 문자열이 처음 나타나는 위치를 반환하고 그렇지 않으면 문자열이 포함되어 있지 않으면 FALSE를 반환합니다.
php > var_dump(strpos("abc", "b") !== false);
bool(true)
php > var_dump(strpos("abc", "z") !== false);
bool(false)
기존 솔루션의 문제점은 종종 간과 되는 엄격한 비교가 필요하다는 것입니다. 위의 예에서 strpos는 문자열에서 위치 0에 있으므로 0을 반환합니다. 엄격한 비교를 사용하지 않으면 표현은 거짓으로 평가되며 이는 사실이 아닙니다.
php > var_dump(strpos("abc", "a") != false);
bool(false)
str_starts_with ( string $haystack , string $needle ) : bool
str_starts_with 함수를 사용하면 문자열이 다른 문자열로 시작하는지 확인할 수 있습니다.
php > var_dump(str_starts_with("abc", "ab"));
bool(true)
php > var_dump(str_starts_with("abc", "xy"));
bool(false)
str_starts_with도 기존 사용자 기능을 사용하여 구현할 수 있지만 새로운 기능은 의도가 명확 해져 사용자 환경을 개선합니다.
php > $haystack = "abc";
php > $prefix = "ab";
php > var_dump(substr($haystack, 0, strlen($prefix)) == $prefix);
bool(true)
php > $prefix = "xy";
php > var_dump(substr($haystack, 0, strlen($prefix)) == $prefix);
bool(false)
str_ends_with ( string $haystack , string $needle ) : bool
str_starts_with와 유사하게 str_ends_with를 사용하면 한 문자열이 다른 문자열로 끝나는 지 확인할 수 있습니다.
php > var_dump(str_ends_with("abc", "bc"));
bool(true)
php > var_dump(str_ends_with("abc", "yz"));
bool(false)
이 함수는 userland 함수를 사용하여 str_starts_와 유사하게 구현할 수도 있습니다.
php > $haystack = "abc";
php > $suffix = "bc";
php > var_dump(substr($haystack, -strlen($suffix)) == $suffix);
bool(true)
php > $suffix = "yz";
php > var_dump(substr($haystack, -strlen($suffix)) == $suffix);
bool(false)
멀티 바이트 문자열은 어떻습니까?
현재 이러한 기능의 멀티 바이트 버전을 도입 할 계획은 없습니다. 이론적 근거는 멀티 바이트 문자열 함수는 대부분 문자열 길이와 오프셋을 처리 할 때만 필요하다는 것입니다. 새로운 문자열 함수는 멀티 바이트 문자열의 유무에 관계없이 정확히 동일하게 작동합니다.
이 새로운 문자열 함수를 언제부터 사용할 수 있습니까?
PHP 8은 2020 년 12 월 3 일에 출시 될 예정입니다. 그러나 아래의 폴리 필을 사용하여 오늘 사용할 수 있습니다!
if(!function_exists('str_contains')) {
function str_contains($haystack, $needle) {
return strpos($haystack, $needle) !== false;
}
}
if(!function_exists('str_starts_with')) {
function str_starts_with($haystack, $needle) {
return substr($haystack, 0, strlen($needle)) === $needle;
}
}
if(!function_exists('str_ends_with')) {
function str_ends_with( $haystack, $needle) {
return substr($haystack, -strlen($needle)) === $needle;
}
}
출처
등록된 댓글이 없습니다.