현재 위치: > 최신 기사 목록> MB_STRSTR 및 MB_STRPOS는 함께 사용하여 복잡한 문자열 조각을 추출합니다.

MB_STRSTR 및 MB_STRPOS는 함께 사용하여 복잡한 문자열 조각을 추출합니다.

gitbox 2025-09-29

PHP에서 문자열 처리는 가장 일반적인 작업 중 하나입니다. 그리고 복잡한 끈에 직면 할 때 필요한 조각을 효율적으로 추출하는 방법은 도전이 될 수 있습니다. 특히 문자열에 다양한 형식의 내용이 포함 된 경우 올바른 기능과 방법을 사용하는 것이 특히 중요합니다. 이 기사는 복잡한 문자열에서 특정 조각을 추출하기 위해 두 개의 멀티 바이트 문자열 함수 인 MB_STRSTRSTRSMB_STRPOS 의 조합을 사용하는 방법에 중점을 둘 것입니다.

1. MB_STRSTR 및 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 입니다.

2. 사용 시나리오 : 복잡한 문자열 조각을 추출합니다

이름, 이메일, 주소 등과 같은 여러 필드가 포함 된 사용자의 프로필과 같은 많은 정보가 포함 된 문자열이 있다고 가정합니다. 우리의 작업은 특정 필드의 값을 추출하는 것입니다.

예를 들어 다음 문자열이 주어지면

 <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_STRPOSMB_STRSTRSTST 기능을 사용하여 검색 및 추출과 협력 할 수 있습니다.

3. 실용적 운영

3.1 이메일 주소의 위치를 ​​찾으십시오

먼저 문자열에서 "사서함"필드의 위치를 ​​찾아야합니다. 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 :"부분의 위치를 ​​반환합니다.

3.2 MB_STRSTR를 사용하여 사서함을 추출하십시오

다음으로 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>

그러나 우리는 우편함 부분 만 필요하므로 다음에 더 다루어 줄 것입니다.

3.3 순수한 이메일 주소를 추출합니다

순수한 이메일 주소를 추출하기 위해 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>

4. 요약

MB_STRSTRMB_STRPOS를 결합하여 매우 유연성으로 복잡한 문자열에서 필요한 조각을 추출 할 수 있습니다. 열쇠는 다음과 같습니다.

  • MB_STRPOS를 사용하여 서브 스트링의 인덱스 위치를 찾으십시오.

  • mb_strstrs를 사용하여 지정된 위치에서 문자열을 추출하십시오.

  • MB_SUBSTR 에 의한 필요한 길이에 따라 대상 단편을 더 정확하게 추출하십시오.

이 방법은 특히 여러 정보를 포함하는 문자열 처리에 적합하며 실제 개발에 필요한 데이터를 효율적으로 얻는 데 도움이 될 수 있습니다.