PHP에서 문자열 조작은 매우 일반적인 작업으로, 두 가지 함수 strrchr () 와 strpos ()가 종종 사용됩니다. 그들은 모두 개발자가 문자열을 처리하는 데 도움이되지만 다르게 사용 및 구현됩니다. 이 기사는이 두 기능의 차이점을 자세히 살펴 보고이 두 기능을보다 효율적으로 사용하는 데 도움이되는 일반적인 팁을 제공합니다.
strpos ()는 문자열이 처음 나타나는 위치를 찾는 PHP의 함수입니다. 지정된 문자 또는 서브 스트링이 처음으로 나타나는 문자열의 위치를 반환합니다 (0에서 계산). 찾을 수 없으면 strpos ()는 false를 반환합니다.
<span><span><span class="hljs-keyword">int</span></span><span> </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>$ haystack : 검색 할 문자열.
$ 바늘 : 발견 될 특성 또는 서브 스트링.
$ 오프셋 (선택 사항) : 검색을 시작할 위치입니다. 제공되지 않으면 기본값은 문자열의 시작 부분에서 시작됩니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</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">if</span></span><span> (</span><span><span class="hljs-variable">$position</span></span><span> !== </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"끈 '<span class="hljs-subst">$needle</span></span></span><span>' 존재하다 '</span><span><span class="hljs-subst">$haystack</span></span><span>' 의 위치: </span><span><span class="hljs-subst">$position</span></span><span>";
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"찾을 수 없습니다 '<span class="hljs-subst">$needle</span></span></span><span>' 끈。";
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>산출:
<span><span>끈 </span><span><span class="hljs-string">'world'</span></span><span> 존재하다 </span><span><span class="hljs-string">'Hello, world!'</span></span><span> 의 위치: 7
</span></span>strrrchr ()는 지정된 문자의 위치를 찾는 데 사용되는 함수입니다. strrchr () 와 달리 strrchr ()는 마지막 일치하는 문자에서 문자열 끝까지 시작하는 부분을 반환합니다.
<span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-title function_ invoke__">strrchr</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>$ haystack : 검색 할 문자열.
$ 바늘 : 발견 될 특성 또는 서브 스트링.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, world! Hello again!"</span></span><span>;
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"Hello"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strrchr</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-string">"마지막 외관에서 '<span class="hljs-subst">$needle</span></span></span><span>' 开始的子끈是: </span><span><span class="hljs-subst">$result</span></span><span>";
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>산출:
<span><span>마지막 외관에서 </span><span><span class="hljs-string">'Hello'</span></span><span> 开始的子끈是: Hello again!
</span></span>검색 방향 : strpos ()은 문자열에서 첫 번째 하위 문자열의 위치를 찾는 반면 strrchr ()는 마지막 발생의 위치를 찾습니다.
반환 값은 다릅니다 . strpos ()는 문자의 인덱스 (적분)를 반환하고 지정된 문자 또는 하위 문자를 찾을 수 없으면 False를 반환합니다. strrrchr ()는 문자열의 일부를 마지막 일치하는 위치에서 문자열의 끝까지 반환합니다. 지정된 문자 나 서브 스트링이 발견되지 않으면 False가 반환됩니다.
때로는 실제 개발에서 문자열에서 문자 위치의 첫 번째와 마지막 발생을 모두 가져와야 할 수도 있습니다. 이 시점에서 strpos () 와 strrrchr () 의 조합이 특히 중요해집니다. 다음은 몇 가지 일반적인 팁입니다.
두 개의 동일한 문자 사이의 하위 문자열을 추출한다고 가정하지만 문자열의 시작과 끝에 각각 나타납니다. strpos ()를 사용하여 첫 번째 발생 위치를 얻고 strrchr ()을 사용하여 마지막 발생 위치를 얻은 다음 String Intercept Function Substr ()을 사용하여 그 사이의 내용을 얻을 수 있습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"start-middle-end"</span></span><span>;
</span><span><span class="hljs-variable">$start_pos</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-string">"start"</span></span><span>) + </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-string">"start"</span></span><span>);
</span><span><span class="hljs-variable">$end_pos</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-string">"end"</span></span><span>);
</span><span><span class="hljs-variable">$substring</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-variable">$start_pos</span></span><span>, </span><span><span class="hljs-variable">$end_pos</span></span><span> - </span><span><span class="hljs-variable">$start_pos</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"提取的子끈是: <span class="hljs-subst">$substring</span></span></span><span>";
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>산출:
<span><span><span class="hljs-section">提取的子끈是: -middle-</span></span><span>
</span></span>때로는 문자열에서 마지막으로 나타나는 문자 후에 컨텐츠의 일부를 추출해야합니다. 이 시점에서 strrchr () 는 매우 유용합니다. 문자의 마지막 발생에서 문자열 끝까지 strrrchr ()를 통해 부분을 얻을 수 있으며 추가 처리 할 수 있습니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"apple,banana,grape,orange"</span></span><span>;
</span><span><span class="hljs-variable">$last_comma</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strrchr</span></span><span>(</span><span><span class="hljs-variable">$haystack</span></span><span>, </span><span><span class="hljs-string">","</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"마지막 쉼표는입니다: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$last_comma</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>산출:
<span><span><span class="hljs-section">마지막 쉼표는입니다: orange</span></span><span>
</span></span>strpos ()는 문자열에서 위치의 첫 번째 발생을 찾는 데 사용되며 위치의 색인을 반환합니다.
strrrchr ()는 문자열의 마지막 발생을 찾는 데 사용되며 해당 위치에서 문자열 끝까지 하위 문자열을 반환합니다.
두 가지를 조합하면 복잡한 문자열 추출 및 검색 문제를 처리 할 수 있습니다.
strpos () 및 strrrchr ()를 유연하게 사용하면 문자열 조작을보다 효율적으로 수행 할 수 있습니다. 사용량을 마스터하면 PHP 프로그램을 작성할 때 문자열 처리 기능이 크게 향상됩니다.