PHP에서 STRPOT 함수는 문자열에서 첫 번째 하위 문자열의 위치를 찾는 데 사용됩니다. 이 기능의 기본 구문은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-keyword">mixed</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$offset</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>): </span><span><span class="hljs-keyword">int</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
$ haystack이 대상 문자열 인 경우, $ 니들은 찾을 수있는 부분 문자열이며 $ Offset 은 선택적 오프셋 매개 변수이며 검색을 시작할 위치를 나타냅니다.
일반적으로 strpos는 서브 스트링이 처음 나타나는 위치의 색인을 반환합니다 (0에서 계산). 서브 스트링을 찾을 수 없으면 False가 반환됩니다.
우선, strpos 기능의 정상적인 동작을 이해하는 것이 중요합니다. 오프셋 ( $ 오프셋 )이 전달되지 않으면 함수가 문자열의 시작 부분을보고 시작합니다. 다음 예를 고려하십시오.
<span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, world!"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"world"</span></span><span>;
</span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$position</span></span><span>; </span><span><span class="hljs-comment">// 산출 7</span></span><span>
</span></span>
이 예에서 Strpos는 7을 반환합니다. 여기서 "Hello, World!"에 "World"가 처음 나타납니다.
strpos 함수 $ 오프셋 의 세 번째 매개 변수는 선택 사항입니다. 대상 문자열에서 검색을 시작할 위치를 지정할 수 있습니다. 예를 들어:
<span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, world!"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"o"</span></span><span>;
</span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$position</span></span><span>; </span><span><span class="hljs-comment">// 산출 8</span></span><span>
</span></span>
이 예에서 STRPOS는 인덱스 5에서 찾아보기 시작하므로 "World"에서 두 번째 "O"의 위치, 즉 8을 반환합니다.
마이너스 번호를 $ 오프셋 매개 변수로 전달하면 strpos 함수는 대상 문자열의 끝에서 기대됩니다. 구체적으로, 음수 오프셋은 문자열의 끝에서 오프셋을 나타내고, 음수의 절대 값은 끝에서 계산 된 문자 수입니다.
예를 들어:
<span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, world!"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"o"</span></span><span>;
</span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>, -</span><span><span class="hljs-number">6</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$position</span></span><span>; </span><span><span class="hljs-comment">// 산출 8</span></span><span>
</span></span>
이 예에서 -6은 문자열 끝에서 ( "!"문자 이후) 6자를 의미합니다. 즉, 검색은 "World!"의 위치에서 시작됩니다. Strpos는 "O"의 위치를 발견하고 8을 반환했습니다.
부정적인 오프셋의 작동 원리를 이해하기위한 또 다른 예를 살펴 보겠습니다.
<span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"abcdef"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"c"</span></span><span>;
</span><span><span class="hljs-variable">$position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$needle</span></span><span>, -</span><span><span class="hljs-number">2</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$position</span></span><span>; </span><span><span class="hljs-comment">// 산출 2</span></span><span>
</span></span>
이 예에서 오프셋 -2는 문자열 "abcdef"의 두 번째 문자 "e"를 기대하는 것을 의미합니다. strpos 함수는 "e"로 시작하여 기판 "c"를 찾습니다. "C"는 두 번째 캐릭터에서 앞으로 계산할 때 2로 돌아갑니다.
네거티브 오프셋을 사용하는 것은 매우 유연하지만 다음에주의를 기울여야 할 몇 가지 핵심 사항이 있습니다.
오프셋은 지나치게 음수 일 수 없습니다 . 음수의 절대 값이 대상 문자열의 길이보다 크면 strpos는 문자열의 시작 위치에서 올라갑니다. 예를 들어, -20을 오프셋으로 통과하고 대상 문자열에 10자가있는 경우, strpos는 시작 위치에서 찾는 것과 동일합니다.
결과는 예상대로 아닐 수 있습니다 . 음의 오프셋은 조회를 비교적 복잡하게 만듭니다. 실제 개발에서 문자열의 길이 또는 검색의 시작점이 결정되지 않으면 결과가 잘못 초래 될 수 있습니다. 따라서 개발자는 오프셋과 대상 문자열 길이 간의 관계를 이해해야합니다.
PHP의 strpos 기능은 음의 오프셋을 통과 할 때 문자열의 끝에서 기대되므로 더 많은 유연성을 제공합니다. 그러나 동시에, 오프셋의 절대 값이 문자열의 길이를 초과하지 않도록 음의 오프셋을 사용할 때주의하십시오. 이를 이해하면 개발자가 검색 작업을보다 정확하게 제어하고 불필요한 오류를 피할 수 있습니다.