現在の位置: ホーム> 最新記事一覧> MB_STRSTRとMB_STRPOSは、複雑な文字列フラグメントを抽出するために一緒に使用されます。

MB_STRSTRとMB_STRPOSは、複雑な文字列フラグメントを抽出するために一緒に使用されます。

gitbox 2025-09-29

PHPでは、文字列処理は最も一般的な操作の1つです。そして、複雑な文字列に直面しているとき、必要な断片を効率的に抽出する方法は挑戦になる可能性があります。特に、文字列にはさまざまな形式のコンテンツが含まれている場合、正しい機能と方法を使用することが特に重要です。この記事では、複雑な文字列から特定のフラグメントを抽出するために、 MB_STRSTRMB_STRPOSの2つのマルチバイトストリング関数の組み合わせを使用する方法に焦点を当てます。

1。MB_STRSTRおよびMB_STRPOSの紹介

実際の戦闘を開始する前に、まずこれら2つの機能の基本的な使用法を理解します。

  • 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 :検索するターゲット文字列。

    • $針:見つかるサブストリング。

    • $ before_needletrueに設定した場合、の前の部分が返されます。

    • $エンコーディング:文字エンコードを指定し、デフォルトで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 :検索するターゲット文字列。

    • $針:見つかるサブストリング。

    • $ offset :検索の開始場所を指定します。

    • $エンコーディング:文字エンコードを指定し、デフォルトはnullです。

2。使用法のシナリオ:複雑な文字列フラグメントを抽出します

名前、電子メール、アドレスなどの複数のフィールドを含むユーザーのプロファイルなど、多くの情報を含む文字列があるとします。私たちのタスクは、そこから特定のフィールドの値を抽出することです。

たとえば、次の文字列が与えられます。

 <span><span><span class="hljs-variable">$user_info</span></span><span> = </span><span><span class="hljs-string">"名前: チャン・サン, 郵便: [email protected], 住所: 北京、川山地区"</span></span><span>;
</span></span>

そこからメールボックスの部分を抽出したいと思います。これを達成するために、 MB_STRPOSおよびMB_STRSTR機能を使用して、検索と抽出に協力できます。

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>

この関数は、「メールボックス:」の位置を文字列に戻します。

3.2 MB_STRSTRを使用して、メールボックスを抽出します

次に、 MB_STRSTRを使用して、「電子メール:」からメールアドレスを抽出します。これを行うには、 $ before_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> 北京、川山地区
</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>

この時点で、 $ emailの値は次のとおりです。

 <span><span>zhangsan</span><span><span class="hljs-keyword">@example</span></span><span>.com
</span></span>

4。概要

MB_STRSTRMB_STRPOSを組み合わせることにより、非常に柔軟性で複雑な文字列から必要なフラグメントを抽出できます。重要なのは:

  • MB_STRPOSを使用して、サブストリングのインデックス位置を見つけます。

  • MB_STRSTRを使用して、指定された場所から文字列を抽出します。

  • さらに、 MB_Substrの必要な長さに応じてターゲットフラグメントをさらに正確に抽出します。

この方法は、複数の情報を含む文字列を処理するのに特に適しており、実際の開発に必要なデータを効率的に取得するのに役立ちます。