PHP에서 문자열 처리는 가장 일반적인 작업 중 하나입니다. 그리고 복잡한 끈에 직면 할 때 필요한 조각을 효율적으로 추출하는 방법은 도전이 될 수 있습니다. 특히 문자열에 다양한 형식의 내용이 포함 된 경우 올바른 기능과 방법을 사용하는 것이 특히 중요합니다. 이 기사는 복잡한 문자열에서 특정 조각을 추출하기 위해 두 개의 멀티 바이트 문자열 함수 인 MB_STRSTRSTRS 및 MB_STRPOS 의 조합을 사용하는 방법에 중점을 둘 것입니다.
실제 전투를 시작하기 전에 먼저이 두 기능의 기본 사용법을 이해하십시오.
MB_STRSTR :이 함수는 다른 문자열에서 문자열의 첫 번째 발생을 찾는 데 사용됩니다. 기존의 STRSTR 함수와 달리 MB_STRSTR 은 UTF-8 및 Shift-JIS와 같은 멀티 바이트 인코딩을 지원하도록 설계되었으며, 이는 이러한 인코딩 형식을 올바르게 처리합니다.
문법:
<span><span><span class="hljs-title function_ invoke__">mb_strstr</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 로 설정되면 바늘이 돌아 오기 전 부분이 반환됩니다.
$ 인코딩 : 문자 인코딩, 기본값으로 NULL (즉, 시스템 기본 인코딩)을 지정합니다.
MB_STRPOS :이 함수는 다른 문자열에서 서브 스트링의 첫 번째 발생 위치를 찾는 데 사용되며 대상 문자열에서 서브 스트링 위치의 인덱스를 반환합니다. 또한 멀티 바이트 인코딩을 지원합니다.
문법:
<span><span><span class="hljs-title function_ invoke__">mb_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">string</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">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">int</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>매개 변수 설명 :
$ haystack : 검색 할 대상 문자열.
$ 바늘 : 찾을 수있는 서브 스트링.
$ 오프셋 : 검색을 시작할 위치를 지정합니다.
$ 인코딩 : 문자 인코딩을 지정하고 기본값은 null 입니다.
이름, 이메일, 주소 등과 같은 여러 필드가 포함 된 사용자의 프로필과 같은 많은 정보가 포함 된 문자열이 있다고 가정합니다. 우리의 작업은 특정 필드의 값을 추출하는 것입니다.
예를 들어 다음 문자열이 주어지면
<span><span><span class="hljs-variable">$user_info</span></span><span> = </span><span><span class="hljs-string">"이름: 장 산, 우편: [email protected], 주소: Chaoyang District, 베이징"</span></span><span>;
</span></span>사서함 부분을 추출하고 싶습니다. 이를 달성하기 위해 MB_STRPOS 및 MB_STRSTRSTST 기능을 사용하여 검색 및 추출과 협력 할 수 있습니다.
먼저 문자열에서 "사서함"필드의 위치를 찾아야합니다. MB_STRPOS를 사용하여 구현하십시오.
<span><span><span class="hljs-variable">$email_position</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$user_info</span></span><span>, </span><span><span class="hljs-string">"우편: "</span></span><span>);
</span></span>이 함수는 문자열의 "Mailbox :"부분의 위치를 반환합니다.
다음으로 MB_STRSTR를 사용하여 "이메일 :"에서 이메일 주소를 추출합니다. 이를 위해서는 $ prection_needle 매개 변수를 False 로 전달하려고합니다.
<span><span><span class="hljs-variable">$email_info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strstr</span></span><span>(</span><span><span class="hljs-variable">$user_info</span></span><span>, </span><span><span class="hljs-string">"우편: "</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>);
</span></span>이 시점에서 $ email_info 의 값은 다음과 같습니다.
<span><span>우편</span><span><span class="hljs-punctuation">:</span></span><span> zhangsan</span><span><span class="hljs-meta">@example</span></span><span>.com, 주소</span><span><span class="hljs-punctuation">:</span></span><span> Chaoyang District, 베이징
</span></span>그러나 우리는 우편함 부분 만 필요하므로 다음에 더 다루어 줄 것입니다.
순수한 이메일 주소를 추출하기 위해 MB_STRPOS를 사용하여 이메일 주소의 최종 위치를 찾아 MB_SUBSTR을 통해 추출 할 수 있습니다.
먼저, 이메일 주소의 시작 위치 (이미 "이메일 :"이후에 알려져 있음)를 찾은 다음 첫 번째 쉼표의 위치, 즉 이메일 주소의 최종 위치를 찾습니다.
<span><span><span class="hljs-variable">$email_start</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$email_info</span></span><span>, </span><span><span class="hljs-string">"우편: "</span></span><span>) + </span><span><span class="hljs-number">4</span></span><span>; </span><span><span class="hljs-comment">// +4그 때문입니다“우편: ”길이</span></span><span>
</span><span><span class="hljs-variable">$email_end</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_strpos</span></span><span>(</span><span><span class="hljs-variable">$email_info</span></span><span>, </span><span><span class="hljs-string">","</span></span><span>, </span><span><span class="hljs-variable">$email_start</span></span><span>); </span><span><span class="hljs-comment">// 从우편주소的起始位置开始查找逗号</span></span><span>
</span></span>그런 다음 MB_SUBSTR을 사용하여 이메일 주소를 추출합니다.
<span><span><span class="hljs-variable">$email</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_substr</span></span><span>(</span><span><span class="hljs-variable">$email_info</span></span><span>, </span><span><span class="hljs-variable">$email_start</span></span><span>, </span><span><span class="hljs-variable">$email_end</span></span><span> - </span><span><span class="hljs-variable">$email_start</span></span><span>);
</span></span>현재 $ 이메일 의 값은 다음과 같습니다.
<span><span>zhangsan</span><span><span class="hljs-keyword">@example</span></span><span>.com
</span></span>MB_STRSTR 및 MB_STRPOS를 결합하여 매우 유연성으로 복잡한 문자열에서 필요한 조각을 추출 할 수 있습니다. 열쇠는 다음과 같습니다.
MB_STRPOS를 사용하여 서브 스트링의 인덱스 위치를 찾으십시오.
mb_strstrs를 사용하여 지정된 위치에서 문자열을 추출하십시오.
MB_SUBSTR 에 의한 필요한 길이에 따라 대상 단편을 더 정확하게 추출하십시오.
이 방법은 특히 여러 정보를 포함하는 문자열 처리에 적합하며 실제 개발에 필요한 데이터를 효율적으로 얻는 데 도움이 될 수 있습니다.