Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP 8 str_contains() 함수로 문자열에 특정 부분 문자열이 포함되어 있는지 확인하는 방법

PHP 8에서 새롭게 도입된 str_contains() 함수는 문자열 안에 특정 부분 문자열(substring)이 존재하는지 확인하는 기능을 제공합니다. 이 함수는 첫 번째 인자로 전달된 문자열(대상 문자열)에 두 번째 인자로 전달된 문자열(찾고자 하는 문자열)이 포함되어 있는지 검사하고, 결과를 true 또는 false 불리언(Boolean) 값으로 반환합니다. 함수 이름 그대로 직관적인 의미를 가지고 있어 사용법이 매우 간단합니다.

str_contains(string $haystack, string $needle): bool

예제 1: PHP 8 str_contains() 함수 사용하기

<?php
    if (str_contains('great reading tutorial', 'tutorial')) {
        var_dump('Tutorial has been found');
    }
?>

실행 결과

string(23) "Tutorial has been found"

위 예제에서는 'great reading tutorial'이라는 문자열 안에 'tutorial'이 포함되어 있으므로 조건문이 true를 반환하고, var_dump()가 해당 메시지를 출력합니다.

예제 2: 부분 문자열이 없는 경우

<?php
    if (str_contains('great reading tutorial', 'hello')) {
        var_dump('great reading');
    }
?>

참고: 위 프로그램은 아무것도 출력하지 않습니다. 'great reading tutorial' 문자열에 'hello'라는 부분 문자열이 존재하지 않기 때문에 str_contains() 함수가 false를 반환하기 때문입니다.

PHP 7.x의 strpos() 함수와 비교

PHP 7.x 버전에서는 문자열에 특정 문자열이 포함되어 있는지 확인할 때 strpos() 함수를 사용했습니다. 이 함수는 찾고자 하는 문자열(needle)의 위치(position)를 반환하며, 문자열을 찾지 못한 경우 false를 반환합니다.

if (strpos('string with lots of words', 'words') !== false) { /* ... */ }

예제: PHP 7.x strpos() 함수

<?php
    $string = 'Hello World!';
    if (strpos($string, 'Hello') !== false) {
        echo 'True';
    }
?>

실행 결과

True

strpos()를 사용할 때 주의할 점은 반환값을 반드시 !== false와 같이 엄격하게 비교해야 한다는 것입니다. strpos()는 문자열이 맨 앞(0번째 위치)에서 발견되면 0을 반환하는데, 느슨한 비교(==)를 사용하면 0과 false가 같다고 판단되어 잘못된 결과가 나올 수 있습니다.

정리

PHP 8의 str_contains() 함수는 기존 strpos() 방식보다 코드의 가독성이 뛰어나고 실수할 가능성도 줄여줍니다. 단순히 문자열 포함 여부만 확인하면 되는 경우라면 str_contains()를 사용하는 것이 권장됩니다. 다만 문자열의 위치 값 자체가 필요한 경우에는 여전히 strpos()를 사용해야 합니다.