현재 위치: > 최신 기사 목록> Stripos가 거짓을 반환하는 이유는 있지만 내가 생각한 결과는 없습니까?

Stripos가 거짓을 반환하는 이유는 있지만 내가 생각한 결과는 없습니까?

M66 2025-06-03

PHP에서 stripos 함수는 문자열이 다른 문자열에 먼저 나타나는 위치를 찾는 데 사용됩니다. Strpos 와 달리 Strpos 는 대소 문자를 사용하지 않습니다. 따라서 코드에서 stripos를 사용하면 문자열에 찾고있는 것이 있다면 거짓을 반환하는 이유는 무엇입니까? 오늘 우리는 심층 분석을 할 것입니다.

1. stripos 기능의 기본 사용

stripos 함수의 기본 구문은 다음과 같습니다.

 stripos(string $haystack, string $needle, int $offset = 0): int|false
  • $ haystack : 검색 할 대상 문자열.

  • $ 바늘 : 찾을 수있는 서브 스트링.

  • $ 오프셋 (선택 사항) : 검색의 시작 위치를 지정합니다.

이 함수는 $ haystack 에 Substring $ 바늘이 먼저 나타나는 위치를 반환합니다. 발견되면 해당 위치의 인덱스 값을 반환합니다. 발견되지 않으면 거짓을 반환합니다.

2. Stripos가 거짓으로 반환하는 이유는 무엇입니까?

(1) 바늘은 건초 더미에 없습니다

이것은 단순 해 보일 수 있지만 때로는 다음과 같은 세부 사항을 무시합니다.

  • 추가 공간을 확인하십시오.

  • 일치하지 않는 문자 세트가 사용되는지 여부.

  • 문자열 인코딩이 일관되는지 여부.

예를 들어, 문자열 "예제" 에서 "예제" 예제를 찾고 있다고 가정합니다. 두 문자열의 내용은 동일하지만 인코딩이 일치하지 않거나 추가 공간이 포함되어 있으면 Stripos는 False를 반환 할 수 있습니다.

 $haystack = "This is an example string";
$needle = "exAMPle";

$result = stripos($haystack, $needle);

if ($result === false) {
    echo "문자열이 없습니다!";
} else {
    echo "문자열을 찾으십시오,위치는입니다: " . $result;
}

여기서 "예제"가 실제로 존재하지만 "이것은 예제 문자열이지만 , 바늘이 건초 더미의 케이스 나 공간과 정확히 일치하지 않으면 Stripos가 여전히 False를 반환 할 수 있습니다.

(2) URL 문제

때로는 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이 잘못된 스 플라이즈를 ​​만들거나 추가 문자 (예 : 추가 슬래시 또는 공백)가 포함 된 경우 조회가 실패 할 수 있습니다.

3. 솔루션

(1) 문자열이 정확히 일치하는지 확인하십시오

찾고있는 문자열에 예상치 못한 문자 나 공백이 없는지 확인하십시오. Trim () 함수를 사용하여 문자열의 양쪽 끝에서 공백 문자를 제거하거나 strtolower ()를 사용하여 균일하게 케이스 할 수 있습니다.

 $haystack = "Visit us at https://www.m66.net/welcome";
$needle = "m66.net";

$haystack = trim($haystack);
$needle = strtolower($needle);

$result = stripos($haystack, $needle);

(2) URL 형식의 정규화

코드에 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 "未도메인 이름을 찾으십시오!";
}

4. 요약

Stripos가 False를 반환하는 이유는 일반적으로 대상 문자열 및 서브 스트링의 형식과 관련이 있습니다. 문자열이 정확히 일치하지 않거나 URL 형식 또는 기타 요인으로 인해 이러한 세부 사항을 이해하고 적절한 문자열 전처리를 수행하면이 문제를 피하는 데 도움이 될 수 있습니다.

이 기사가 Stripos 기능의 사용을 이해하는 데 도움이되기를 바랍니다! 비슷한 문자열 일치 문제가 발생하면 문자열의 형식과 내용을 확인하여 올바른지 확인할 수 있습니다.