strpos()의 수치 비교 이해
PHP에서 strpos() 함수를 사용하여 엄격한 동등 비교를 수행할 때 예기치 않은 결과가 발생할 수 있습니다. . 이 기사에서는 strpos()를 true와 비교하면 의도한 반대 결과가 나올 수 있는 이유를 조사합니다.
제공된 코드에서 if 문은 strpos($link, $unacceptable)의 결과를 true와 비교합니다. 그러나 이 비교는 $link 내에 바람직하지 않은 문자열이 있는지 감지하려는 의도된 목적을 달성하지 못합니다.
이런 일이 발생하는 이유를 이해하려면 strpos() 설명서를 참조해야 합니다. 문서에 따르면 strpos()는 제목 문자열 내에서 검색된 문자열이 처음 나타나는 숫자 위치를 반환합니다. 그러나 항목이 발견되지 않으면 false를 반환합니다.
코드 조각에서 if 문은 strpos()가 true를 반환하는지 확인합니다. strpos()는 일치하는 항목이 발견되면 숫자(0 이상)를 반환하고 일치하는 항목이 없으면 false를 반환하므로 일치하는 항목이 발견되면 명령문은 항상 false로 평가됩니다. 이는 엄격한 동등 비교에서 true가 유효하지 않은 숫자로 간주되기 때문입니다.
이 문제를 해결하려면 strpos()의 결과가 아닌지 확인하는 비교 연산자를 !== false로 변경해야 합니다. false(즉, 일치하는 항목을 찾았습니다):
// ... if (strpos($link, $unacceptable) !== false) { echo 'Unacceptable Found<br />'; } else { echo 'Acceptable!<br />'; } // ...
이 비교를 사용하면 코드는 $link에 허용되지 않는 문자열 중 하나가 있는 경우를 올바르게 식별합니다. 변수를 선택하고 적절한 메시지를 출력합니다.
위 내용은 `strpos() !== true`가 PHP에서 문자열 존재를 감지하지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!