php에서 stripos ()는 한 문자열에서 사례에 민감하지 않은 다른 서브 스트링을 찾는 데 사용되는 매우 일반적인 기능입니다. 이 함수의 기본 사용은 매우 간단하지만 세 번째 매개 변수 인 $ 오프셋 은 종종 무시되거나 잘못 사용됩니다.
이 기사는 $ 오프셋 매개 변수, 사용 시나리오의 역할 및 스트링 검색의 효율성을 최적화하기 위해이를 사용하는 방법에 대해 자세히 소개합니다.
구문은 다음과 같습니다.
int|false stripos(string $haystack, string $needle, int $offset = 0)
$ haystack : 검색 할 문자열.
$ 바늘 : 찾을 수있는 서브 스트링.
$ 오프셋 (선택 사항) : 검색을 시작할 위치입니다.
반환 값 : 발견 된 경우 첫 번째 발생 위치 (0부터 시작)를 반환합니다. 찾을 수 없으면 false를 반환하십시오.
참고 : stripos () 는 케이스에 민감하지만 strpos ()는 케이스에 민감합니다.
$ OFFSET 문자열의 시작부터 시작하는 하위 문자열 (즉, 위치 0)을 찾는 위치를 지정합니다.
이것은 다음 시나리오에서 특히 유용합니다.
예를 들어, 텍스트 단락에서 두 번째로 나타나는 키워드를 찾고 있다고 가정 해 봅시다.
$text = "방문에 오신 것을 환영합니다 m66.net,우리 웹 사이트는입니다 https://m66.net/page。";
$firstPos = stripos($text, "m66.net");
if ($firstPos !== false) {
// 첫 등장 후 두 번째로 찾기 시작
$secondPos = stripos($text, "m66.net", $firstPos + 1);
echo "두 번째로 나타나는 것입니다:$secondPos";
}
산출:
두 번째로 나타나는 것입니다:22
$ OFFSET = $ firstpos + 1을 설정하면 처음 나타나는 중복 일치를 피합니다.
긴 문자열에서 여러 개의 동일한 하위 문자열을 찾을 때 "Paginated Searches"의 경우 루프와 $ 오프셋을 결합 할 수 있습니다.
$content = "링크를 클릭하십시오 https://m66.net/a,다시 클릭하십시오 https://m66.net/b,마지막 방문 https://m66.net/c";
$needle = "https://m66.net/";
$offset = 0;
while (($pos = stripos($content, $needle, $offset)) !== false) {
echo "위치를 찾으십시오:$pos\n";
$offset = $pos + strlen($needle); // 나중에 계속 검색하십시오
}
산출:
위치를 찾으십시오:6
위치를 찾으십시오:26
위치를 찾으십시오:47
이 방법은 데이터 분석, 텍스트 처리 및 로그 분석에서 여러 동일한 키워드를 배치하는 데 특히 적합합니다.
텍스트의 특정 부분이 관련이 없거나 후반에만 관심이 있다는 것을 이미 알고 있다면, $ 오프셋을 사용하는 경우 특히 긴 문자열을 다룰 때 성능을 크게 향상시키고 불필요한 일치 시도를 피할 수 있습니다.
$largeText = file_get_contents('large_text.txt');
$offset = strpos($largeText, '텍스트를 시작하십시오');
if ($offset !== false) {
$startSearchFrom = $offset + strlen('텍스트를 시작하십시오');
$pos = stripos($largeText, '키워드', $startSearchFrom);
echo "키워드出现的位置:$pos";
}
처음부터 검색하는 것과 비교할 때, 관련이없는 영역 인 검색을 건너 뛰는 것이 더 효율적이고 자원 절약입니다.
음의 오프셋 : 음수 값을 사용할 수 있지만 대부분의 시나리오에서 예기치 않은 동작으로 이어질 것입니다. 당신이 목적을 실제로 이해하지 않는 한, 이와 같이 사용하는 것이 좋습니다.
$ 오프셋을 무시하면 중복 일치가 발생합니다 . 여러 차례 대상을 찾아야하는 경우 $ $ 오프셋을 설정하십시오. 그렇지 않으면 항상 첫 번째 발생 위치로 돌아갑니다.
Stripos () 함수의 $ 오프셋 매개 변수는 강력하지만 종종 간과되는 기능입니다. 합리적으로 $ 오프셋을 사용하면 코드가보다 효율적이고 유연해질 수 있습니다. 여러 번 나타나는 하위 문자열을 찾고 있거나 처리 된 컨텐츠를 건너 뛰든 $ 오프셋은 편리합니다.
다음에 검색 관련 논리를 작성하면 멈추고 생각할 수도 있습니다. $ 오프셋을 추가해야합니까?