str_contains()
함수 사용법
str_contains()
함수는
문자열에 특정 문자열이 포함하는지 확인하는 함수입니다.
문자열에서 주어진 문자열이 포함되어 있으면 true
를 그렇지 않으면 false
를 반환합니다.
이 함수는 대소문자를 구분합니다.
PHP 8에서 도입된 함수로 PHP 8 이전의 버전에서는 호환되지 않습니다.
$haystack = '반갑습니다! 코딩에브리바디입니다.';
$needle = '코딩';
if (str_contains($haystack, $needle)) {
echo "문자열에 '$needle'이 포함되어 있습니다.";
} else {
echo "문자열에 '$needle'이 포함되어 있지 않습니다.";
}
// 출력: "문자열에 '코딩'이 포함되어 있습니다."
str_contains()
함수의 형식은 다음과 같습니다.
구문
str_contains(string $haystack, string $needle): bool
매개변수
$haystack |
검색 대상이 되는 문자열입니다. |
---|---|
$needle |
검색할 문자열입니다.
대소문자를 구분합니다. |
반환 값
검색 대상이 되는 문자열에서 검색할 주어진 문자열이 포함되어 있으면 true
를 그렇지 않으면 false
를 반환합니다.
검색할 주어진 문자는 대소문자를 구분합니다.
검색할 문자열이 빈 문자열(''
)일 경우
빈 문자열(''
)은 모든 문자열의 끝 부분에 있다고 간주되므로, 빈 문자열을 str_contains()
로 사용하면 항상 true
를 반환합니다.
if (str_contains('abc', '')) {
echo '빈 문자열이 있는지 확인하면 항상 true가 반환됩니다';
}
// 출력: '빈 문자열이 있는지 확인하면 항상 true가 반환됩니다'
이러한 동작은 문자열의 논리적 정의에 근거합니다. 빈 문자열은 어떤 문자열의 시작 부분이나 끝 부분에 존재하므로, 빈 문자열로 시작하거나 끝나는 모든 문자열에 대해 true
를 반환하는 것이 자연스러운 결과입니다. 따라서, 이 개념은 PHP뿐만 아니라 여러 프로그래밍 언어에서 보편적으로 적용됩니다.
주의할 점
str_contains()
함수는 대소문자를 구분합니다.
str_contains()
함수는 대소문자를 구분합니다.
$haystack = 'Hello, World!';
if (str_contains($haystack, 'world!')) {
echo "문자열에 'world!'가 포함되어 있습니다.";
} else {
echo "대소문자가 일치하지 않아 'world!'를 찾을 수 없습니다.";
}
// 출력: "대소문자가 일치하지 않아 'world!'를 찾을 수 없습니다."
Polyfill
PHP 8에서 도입된 함수로 PHP 8 이전의 버전에서는 호환되지 않습니다.
PHP 8 이전의 버전에서는 호환되지(지원하지) 않기 때문에 PHP 8 이전의 버전에서는 다음과 같이 사용할 수도 있습니다.
일러두기
아래의 예제 코드는 PHP 8 이전 버전에서 str_contains()
함수를 대체하기 위한 간단한 polyfill 예제입니다. 완벽하지 않습니다.
이 polyfill은 간단한 사용 사례에 맞추어 작성되었지만, 특정 사용자의 요구 사항(PHP 버전, 성능 고려, 대소문자 구분, 빈 문자열 처리, 다국어 문자열 처리, 기타 상황 등)에 따라 유연성을 추가할 필요가 있을 수 있습니다.
str_contains()
함수의 polyfill 예제
if (!function_exists('str_contains')) {
/*
* str_contains() 함수의 polyfill 예제
* 출처: https://core.trac.wordpress.org/browser/trunk/src/wp-includes/compat.php#L423
*/
function str_contains($haystack, $needle) {
if ('' === $needle) {
return true;
}
return false !== strpos($haystack, $needle);
}
}
$haystack = '반갑습니다! 코딩에브리바디입니다.';
$needle = '코딩';
if (str_contains($haystack, $needle)) {
echo "문자열에 '$needle'이 포함되어 있습니다.";
} else {
echo "문자열에 '$needle'이 포함되어 있지 않습니다.";
}
// 출력: "문자열에 '코딩'이 포함되어 있습니다."
코드 부연설명
strpos()
함수는 문자열에서 특정 문자열의 위치를 찾는 함수입니다. 대소문자를 구분합니다.
PHP 8 이전의 버전에서 문자열에 특정 문자열의 포함 여부를 확인하려면 strpos()
함수를 활용해서 사용하세요.
예제
str_contains()
함수는 문자열에 특정 문자열이 포함되어 있는지를 확인할 때 유용합니다.
예를 들어, 검색 기능이나 문자열 처리에 적합합니다. 다음은 str_contains()
함수의 사용 예시 중 일부입니다.
검색 기능 구현
$searchTerm = '사과';
$text = '나는 사과와 바나나를 좋아해요.';
if (str_contains($text, $searchTerm)) {
echo "텍스트에 '$searchTerm' 단어가 포함되어 있습니다.";
} else {
echo "텍스트에 '$searchTerm' 단어가 포함되어 있지 않습니다.";
}
// 출력: "텍스트에 '사과' 단어가 포함되어 있습니다."
문자열 필터링
$content = '이 문장에는 원치 않는 단어가 포함되어 있습니다.';
$unwantedWords = ['원치 않는', '나쁜', '부적절한'];
foreach ($unwantedWords as $word) {
if (str_contains($content, $word)) {
$content = str_replace($word, '***', $content);
}
}
echo $content;
// 출력: '이 문장에는 *** 단어가 포함되어 있습니다.'
URL 검사
$fileName = 'document.pdf';
$allowedExtensions = ['pdf', 'docx', 'txt'];
$fileExtension = pathinfo($fileName, PATHINFO_EXTENSION);
if (in_array($fileExtension, $allowedExtensions)) {
echo '파일의 확장자가 유효합니다.';
} else {
echo '유효하지 않은 파일 확장자입니다.';
}
// 출력: '파일의 확장자가 유효합니다.'
PHP 버전
- PHP 8 버전부터 지원합니다.