php에서 stripos () 함수는 다른 문자열에서 문자열이 먼저 나타나는 위치를 찾는 데 사용됩니다 (Case Insensitive). 이 기능은 주어진 컨텐츠에 키워드가 있는지 여부를 결정하는 것과 같은 문자열 관련 로직을 처리 할 때 종종 사용됩니다.
그러나 stripos () 의 반환 값 특성으로 인해 많은 개발자는 판단 할 때 특히 0 의 반환 값을 처리하기 위해 걸려 넘어지는 경향이 있습니다. 이 기사는이 문제를 자세히 분석하고 올바른 판단 방법을 제공합니다.
$haystack = "Welcome to m66.net!";
$needle = "welcome";
$pos = stripos($haystack, $needle);
위의 예에서는 대상 문자열의 시작 부분에 "환영"이 나타나기 때문에 stripos ()는 0을 반환합니다 (케이스는 다르지만 stripos ()는 대소 문자에 민감합니다).
많은 초보자가 다음과 같은 방식으로 쓸 것입니다.
if (stripos($haystack, $needle)) {
echo "키워드를 찾았습니다";
} else {
echo "키워드가 존재하지 않습니다";
}
이 코드의 문제점은 문자열의 시작 부분에 키워드가 나타나면 (위치 위치), 판단 이 0이 false 로 취급되고 다른 지점이 잘못 실행된다는 것입니다 .
$pos = stripos($haystack, $needle);
if ($pos !== false) {
echo "키워드를 찾았습니다,위치는입니다:$pos";
} else {
echo "키워드가 존재하지 않습니다";
}
( ! == false )와 동일한 작문 방법을 사용하면 함수가 0 또는 False를 반환하는지 정확하게 구별하여 논리적 오류를 피할 수 있습니다.
예를 들어, 사용자가 제출 한 주석에 특정 민감한 단어가 포함되어 있는지 여부를 감지하고 다음을 알리려고합니다.