PHP의 문자열 처리 기능 중에서 STRPO 와 STRPO는 종종 사용되는 두 가지 기능입니다. 그것들은 거의 동일하게 보이지만 한 글자는 분리되어 있지만 실제로는 중요한 차이가 있습니다. 이 기사는 사용 측면, 차이, 예방 조치 등 의이 두 기능의 유사점과 차이점을 철저히 이해하게됩니다.
strpos 와 strpos 는 둘 다 문자열이 다른 문자열에 먼저 나타나는 위치를 찾는 데 사용됩니다. 기본 구문은 다음과 같습니다.
strpos(string $haystack, mixed $needle, int $offset = 0): int|false
stripos(string $haystack, mixed $needle, int $offset = 0): int|false
$ haystack 은 검색 할 대상 문자열입니다.
$ 바늘은 찾아야 할 부분 문자열입니다.
$ 오프셋은 선택 사항이며 검색을 시작할 위치를 지정합니다.
이것은 둘 사이의 가장 큰 차이점입니다.
STRPO 는 사례에 민감합니다 .
stripos 는 사례에 민감합니다 .
<?php
$str = "Hello World";
var_dump(strpos($str, "world")); // 산출:bool(false)
var_dump(stripos($str, "world")); // 산출:int(6)
?>
이 예에서는 STRPO가 소문자 "세계"를 찾을 수 없으므로 False를 반환하지만 Strpos 는 대소 문자를 사용하지 않으므로 위치 6을 올바르게 찾을 수 있습니다.
두 기능 모두 정수 (일치 위치) 또는 False (찾을 수 없음) 를 반환합니다. 일치하는 위치가 0 일 때 (즉, 하위 문자가 시작에) == false를 사용하여 일치하는 것이 실패하는지 여부를 결정합니다.
if (strpos("abc", "a") == false) {
echo "찾을 수 없습니다";
}
출력은 다음과 같습니다. "찾을 수 없음" - 실제로 발견됩니다.
if (strpos("abc", "a") === false) {
echo "찾을 수 없습니다";
}
항상 합동 ===를 사용하여 위치 0의 잘못 판단을 피하는 것이 잘못된 지 여부를 결정하십시오.
STRPOS : 민감한 단어 감지, 키 명령 매칭 등과 같은 대소 문자에 민감한 검색이 필요합니다.
stripos : 사용자 입력 처리, UA를 판단하기위한 크롤러, URL 매개 변수 분석 등과 같은 검색이 더 편안해지기를 원합니다.
<?php
$url = "https://gitbox.net/shop/product/123";
if (stripos($url, "/shop/") !== false) {
echo "이것은 제품 페이지입니다";
}
?>
이 예에서는 StripoS를 사용하여 URL에 상류 및 소문자에 관계없이 URL에 사용자가 방문하는 페이지 유형을 효과적으로 식별 할 수 있는지 확인할 수 있습니다.
가장 일반적인 용도에서, 둘 사이의 성능 격차는 무시할 수 있습니다. 그러나 큰 루프로 자주 전화를 걸고 문자열 수가 특히 크면 STRPOS는 케이스 변환 프로세스가 없기 때문에 약간 더 빠릅니다.
STRPOS 와 STRPO 의 반환 값을 혼합하여 통일 된 판단을 내리지 말고 사례에 민감한 의미에주의하십시오.
검색 로직이 사용자 입력에 의존하는 경우 최대한 친절한 Stripos를 사용해보십시오.
사용 === False를 사용하여 일치가 실패했는지 여부를 결정합니다. 그렇지 않으면 위치 0에 의해 쉽게 오해됩니다.
기능 이름 | 사례에 민감한 지 여부 | 반환 값 유형 | 시나리오를 사용하십시오 |
---|---|---|---|
Strpos | 예 | int 또는 false | 정확하게 장면과 일치하며 엄격하게 대사합니다 |
stripos | 아니요 | int 또는 false | 느슨하게 일치 시나리오, 사례에 민감한 검색 요구 사항 |
strpos 와 strpos 는 단 하나의 소문자 I 이지만 그 뒤에있는 논리는 원하는 결과를 찾을 수 있는지 여부를 결정합니다. 실제 개발에서 합리적으로 선택하면 많은 버그를 피할 수 있습니다. 이 기사가 당신이 그들 사이의 차이점을 진정으로 이해하는 데 도움이되기를 바랍니다. 다음에 코드를 작성하는 것을 망설이지 않을 것입니다!