PHP에서 stripos 함수는 문자열이 다른 문자열에 먼저 나타나는 위치를 찾는 데 사용됩니다. Strpos 와 달리 Strpos 는 대소 문자를 사용하지 않습니다. 따라서 코드에서 stripos를 사용하면 문자열에 찾고있는 것이 있다면 거짓을 반환하는 이유는 무엇입니까? 오늘 우리는 심층 분석을 할 것입니다.
stripos 함수의 기본 구문은 다음과 같습니다.
stripos(string $haystack, string $needle, int $offset = 0): int|false
$ haystack : 검색 할 대상 문자열.
$ 바늘 : 찾을 수있는 서브 스트링.
$ 오프셋 (선택 사항) : 검색의 시작 위치를 지정합니다.
이 함수는 $ haystack 에 Substring $ 바늘이 먼저 나타나는 위치를 반환합니다. 발견되면 해당 위치의 인덱스 값을 반환합니다. 발견되지 않으면 거짓을 반환합니다.
이것은 단순 해 보일 수 있지만 때로는 다음과 같은 세부 사항을 무시합니다.
추가 공간을 확인하십시오.
일치하지 않는 문자 세트가 사용되는지 여부.
문자열 인코딩이 일관되는지 여부.
예를 들어, 문자열 "예제" 에서 "예제" 예제를 찾고 있다고 가정합니다. 두 문자열의 내용은 동일하지만 인코딩이 일치하지 않거나 추가 공간이 포함되어 있으면 Stripos는 False를 반환 할 수 있습니다.
$haystack = "This is an example string";
$needle = "exAMPle";
$result = stripos($haystack, $needle);
if ($result === false) {
echo "문자열이 없습니다!";
} else {
echo "문자열을 찾으십시오,위치는입니다: " . $result;
}
여기서 "예제"가 실제로 존재하지만 "이것은 예제 문자열이지만 , 바늘이 건초 더미의 케이스 나 공간과 정확히 일치하지 않으면 Stripos가 여전히 False를 반환 할 수 있습니다.
때로는 URL이 검색 문자열에 포함 된 경우 Stripos가 False를 반환하는 이유는 URL의 형식으로 인한 것일 수 있습니다. 예를 들어, URL의 도메인 이름이 정확히 일치하지 않거나 전후에 추가 문자가있는 경우 일치가 실패 할 수도 있습니다.
다음 코드가 있다고 가정합니다.
$haystack = "Visit us at https://www.m66.net/welcome";
$needle = "m66.net";
$result = stripos($haystack, $needle);
if ($result === false) {
echo "URL이 발견되지 않았습니다!";
} else {
echo "URL을 찾으십시오,위치는입니다: " . $result;
}
이 예에서는 문자열 m66.net을 찾고자합니다. $ haystack 과 $ 니들이 정확히 일치하고 다른 간섭 문자가 없으면 Stripos는 발견 된 인덱스 값을 반환 할 수 있어야합니다. 그러나 URL이 잘못된 스 플라이즈를 만들거나 추가 문자 (예 : 추가 슬래시 또는 공백)가 포함 된 경우 조회가 실패 할 수 있습니다.
찾고있는 문자열에 예상치 못한 문자 나 공백이 없는지 확인하십시오. Trim () 함수를 사용하여 문자열의 양쪽 끝에서 공백 문자를 제거하거나 strtolower ()를 사용하여 균일하게 케이스 할 수 있습니다.
$haystack = "Visit us at https://www.m66.net/welcome";
$needle = "m66.net";
$haystack = trim($haystack);
$needle = strtolower($needle);
$result = stripos($haystack, $needle);
코드에 URL이 일치하는 경우 URL 형식이 균일한지 확인하십시오. 도메인 이름 부분에만 관심이있는 경우 일치하기 전에 URL의 도메인 이름 부분을 추출 할 수 있습니다.
$haystack = "Visit us at https://www.m66.net/welcome";
$needle = "m66.net";
// 사용 parse_url 도메인 이름을 추출하십시오
$parsed_url = parse_url($haystack, PHP_URL_HOST);
$result = stripos($parsed_url, $needle);
if ($result !== false) {
echo "도메인 이름을 찾으십시오!";
} else {
echo "未도메인 이름을 찾으십시오!";
}
Stripos가 False를 반환하는 이유는 일반적으로 대상 문자열 및 서브 스트링의 형식과 관련이 있습니다. 문자열이 정확히 일치하지 않거나 URL 형식 또는 기타 요인으로 인해 이러한 세부 사항을 이해하고 적절한 문자열 전처리를 수행하면이 문제를 피하는 데 도움이 될 수 있습니다.
이 기사가 Stripos 기능의 사용을 이해하는 데 도움이되기를 바랍니다! 비슷한 문자열 일치 문제가 발생하면 문자열의 형식과 내용을 확인하여 올바른지 확인할 수 있습니다.