PHP에서 문자열 조작은 매우 일반적이고 중요한 작업입니다. 보다 유연한 문자열 처리를 달성하기 위해 PHP는 많은 유용한 기능을 제공합니다. 그중 하나는 MB_STRSTR 함수로, 멀티 바이트 인코딩 된 문자열에서 하위 문자열을 찾을 수 있으며 대소 문자를 찾을 수 있습니다. 이 기능은 주로 UTF-8 또는 다른 멀티 바이트 문자 세트와 같은 문자열을 처리하는 데 사용됩니다.
MB_STRSTR 는 Case Insensitive String Lookup을 수행하기위한 PHP의 멀티 바이트 버전 기능입니다. 정상 STRSTR 함수와 유사하게 MB_STRSTR은 지정된 서브 스트링이 먼저 나타나는 부분을 반환합니다. 차이점은 멀티 바이트 문자를 올바르게 처리 할 수 있다는 것입니다.
<span><span><span class="hljs-title function_ invoke__">mb_stristr</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">string</span></span><span> </span><span><span class="hljs-variable">$needle</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$before_needle</span></span><span> = </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$encoding</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>
$ haystack : 이것은 검색 할 대상 문자열입니다.
$ 니들 : 이것은 당신이 찾고있는 부분 문자열입니다.
$ prever_needle : true 로 설정되면 반환 된 문자열은 $ haystack 에서 $ beless가 처음 나타나는 곳까지 부분이됩니다. 기본값은 False 이며 $ 니들 다음에 부품을 반환합니다.
$ 인코딩 : 문자 인코딩을 지정합니다 (지정되지 않은 경우 기본값은 내부 문자 인코딩 설정, 일반적으로 UTF-8을 사용하는 것입니다).
다음은 MB_STRSTRTSTR 함수를 사용하여 사례 감수성 하위 문자열을 찾는 방법을 보여주는 간단한 예입니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 인코딩을 설정하십시오 UTF-8</span></span><span>
</span><span><span class="hljs-title function_ invoke__">mb_internal_encoding</span></span><span>(</span><span><span class="hljs-string">"UTF-8"</span></span><span>);
</span><span><span class="hljs-comment">// 대상 문자열</span></span><span>
</span><span><span class="hljs-variable">$haystack</span></span><span> = </span><span><span class="hljs-string">"Hello, 세계! Welcome to PHP."</span></span><span>;
</span><span><span class="hljs-comment">// 찾을 수있는 서브 스트링</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-comment">// 사용 mb_stristr 기판을 찾으십시오,케이스 둔감</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_stristr</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">$result</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></span><span> . </span><span><span class="hljs-variable">$result</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></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
mb_internal_encoding ( "UTF-8")은 내부 문자를 UTF-8로 설정하여 멀티 바이트 스트링이 올바르게 처리되도록합니다.
우리는 mb_strstr ($ haystack, $ 니들)을 사용하여 $ haystack 에서 $ 니들을 찾습니다. MB_Strist 는 사례에 민감하지 않기 때문에 "세계"와 "세계"는 모두 일치하는 것으로 간주됩니다.
일치하는 부분 문자열이 발견되면 함수는 부품을 일치하는 위치에서 문자열 끝으로 반환합니다. 찾을 수없는 경우, false .
MB_Strist 의 중요한 특징은 멀티 바이트 문자 세트 (예 : UTF-8, SJI 등)를 올바르게 처리 할 수 있다는 것입니다. 이것은 비 ASCII 문자열을 다룰 때 strrist 보다 더 신뢰할 수있게합니다.
예를 들어, 우리가 한자를 찾고 있다고 가정합니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 대상 문자열包含中文字符</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-comment">// 찾다"좋다"서브 스트링</span></span><span>
</span><span><span class="hljs-variable">$needle</span></span><span> = </span><span><span class="hljs-string">"좋다"</span></span><span>;
</span><span><span class="hljs-comment">// 찾다并返回匹配部分</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_stristr</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">$result</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></span><span> . </span><span><span class="hljs-variable">$result</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></span><span>;
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
이 예에서 MB_Strist는 멀티 바이트 문자 "Like"를 올바르게 인식하고 하위 문자에서 시작하는 후속 섹션을 반환합니다.
문자 인코딩 : 특히 멀티 바이트 문자 세트를 다룰 때 $ haystack 과 $ 니들 의 캐릭터 인코딩이 일관성이 있는지 확인하십시오. 인코딩이 일치하지 않으면 타의 추종을 불허하거나 잘못된 결과를 초래할 수 있습니다.
성능 고려 사항 : 일반 Strist 기능과 비교하여 MB_Strist 의 성능은 특히 다량의 텍스트로 검색 할 때 약간 열등 할 수 있습니다. 실제 조건에 따라 고려해야합니다.
원래 위치로 돌아 가지 않음 : MB_STRPOS 와 같은 함수와 달리 MB_STRSTR는 위치가 아닌 일치 지점에서 시작하는 부분 문자열을 반환합니다. 위치를 얻어야하는 경우 MB_STRPOS 또는 MB_STRRPOS (리버스 조회)를 사용할 수 있습니다.
MB_STRISTR 는 PHP에서 매우 유용한 기능으로, 멀티 바이트 문자 세트의 문자열에서 사례에 민감한 검색 작업을 수행 할 수 있습니다. 이 기능을 합리적으로 사용하면 UTF-8 또는 기타 인코딩 된 문자열을보다 쉽게 처리하고 유연한 문자열 일치를보다 쉽게 수행 할 수 있습니다.