現在の位置: ホーム> 最新記事一覧> MB_EREGとMB_SPLIT関数を組み合わせて、マルチバイト文字列の効率的なセグメンテーションを実現する方法は?実用的なガイド

MB_EREGとMB_SPLIT関数を組み合わせて、マルチバイト文字列の効率的なセグメンテーションを実現する方法は?実用的なガイド

gitbox 2025-08-27

3. MB_SPLITを使用してセグメンテーションを実装します

<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">$pattern</span></span><span> = </span><span><span class="hljs-string">"[,,]+"</span></span><span>;  </span><span><span class="hljs-comment">// 英語のコンマと中国のコンマをマッチします,1つ以上の連続</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_split</span></span><span>(</span><span><span class="hljs-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>

出力結果:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">0</span></span><span>] =&gt; りんご
    [</span><span><span class="hljs-meta">1</span></span><span>] =&gt; バナナ
    [</span><span><span class="hljs-meta">2</span></span><span>] =&gt; タンジェリン
    [</span><span><span class="hljs-meta">3</span></span><span>] =&gt; グレープ
    [</span><span><span class="hljs-meta">4</span></span><span>] =&gt; スイカ
)
</span></span>

MB_SPLITは、中国のコンマを自動的に認識し、文字列セグメンテーションを正しく完成させます。


4。MB_EREGとの事前試合

いくつかの複雑なシナリオでは、最初に文字列に特定のパターンがあるかどうかを判断し、次にセグメント化したいと考えています。 MB_EREGを使用できます。

 <span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">mb_ereg</span></span><span>(</span><span><span class="hljs-string">"[,,]"</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>)) {
    </span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_split</span></span><span>(</span><span><span class="hljs-string">"[,,]+"</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-variable">$result</span></span><span> = [</span><span><span class="hljs-variable">$text</span></span><span>]; </span><span><span class="hljs-comment">// 分割する必要はありません</span></span><span>
}
</span></span>

これを行うと、不必要なセグメンテーション操作を回避し、効率を向上させることができます。


5。注意すべきこと

  • 統一された文字エンコード: MB_INTERNAL_ENCODING( "UTF-8")を使用して、関数がUTF-8によって均一にエンコードされていることを確認して、文字化けコードを避けます。

  • 通常のモードの書き込み: MbStringの正規表現の構文はわずかに異なり、正方形のブラケットと脱出された文字の正しい使用に注意を払ってください。

  • パフォーマンスの考慮事項: MB_EREGと判断を組み合わせて、セグメンテーションを組み合わせて、大規模なテキストに複数の通常の試合を実行する場合、効率を向上させることができます。


6。概要

MB_EREGMB_SPLITを合理的に組み合わせることで、次のことができます。

  • マルチバイトエンコードされた文字列セグメンテーションを正確に処理します

  • 複数のセパレータの柔軟なサポート

  • 試合前の条件下でパフォーマンスを最適化します

これらのスキルを習得すると、多言語のテキストを扱うときに安心し、一般的な文字化けコードとセグメンテーションエラーを回避できます。


サンプルフルコード:

 <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-variable">$text</span></span><span> = </span><span><span class="hljs-string">"りんご,バナナ,タンジェリン,グレープ,スイカ"</span></span><span>;

</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">mb_ereg</span></span><span>(</span><span><span class="hljs-string">"[,,]"</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>)) {
    </span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">mb_split</span></span><span>(</span><span><span class="hljs-string">"[,,]+"</span></span><span>, </span><span><span class="hljs-variable">$text</span></span><span>);
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-variable">$result</span></span><span> = [</span><span><span class="hljs-variable">$text</span></span><span>];
}

</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span></span>

実行後、正しい分割結果を取得できます。