現在の位置: ホーム> 最新記事一覧> MB_EREG関数で一致結果をキャプチャする方法は?完全なステップと予防策の分析

MB_EREG関数で一致結果をキャプチャする方法は?完全なステップと予防策の分析

gitbox 2025-09-02

1。MB_EREG関数の基本的な使用

MB_EREG関数の基本的な構文は次のとおりです。

 <span><span><span class="hljs-title function_ invoke__">mb_ereg</span></span><span>(pattern, </span><span><span class="hljs-keyword">string</span></span><span>, &amp;regs)
</span></span>
  • パターン:正規表現のパターン。

  • 文字列:一致する必要があるターゲット文字列。

  • REGS :これは、一致する結果を保存するためのオプションのパラメーターです。このパラメーターが提供されている場合、 MB_EREGはマッチングパーツを配列REGに保存します。配列のサブスクリプト0は一致する結果全体に対応し、その後のサブスクリプトはサブパターンの一致結果に対応します。

例:

 <span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"いらっしゃいませPHPチュートリアル"</span></span><span>;
</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">"PHP"</span></span><span>;
</span><span><span class="hljs-variable">$regs</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-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-variable">$regs</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"正常に一致します\n"</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$regs</span></span><span>);  </span><span><span class="hljs-comment">// キャプチャされたマッチング結果を出力します</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">"マッチが失敗しました\n"</span></span><span>;
}
</span></span>

上記の例では、文字列「PHPチュートリアルへようこそ」「PHP」が含まれている場合、 MB_EREGはtrueを返し、一致する「PHP」を$ regsアレイに保存します。

2。一致する結果をキャプチャします

マッチング結果をキャプチャするための鍵は、REGSパラメーターにあります。このパラメーターを使用すると、 MB_EREGは一致するコンテンツを1つずつ保存し、複数のサブエキシピューのマッチング結果をキャプチャできます。

例:

 <span><span><span class="hljs-variable">$string</span></span><span> = </span><span><span class="hljs-string">"これはですPHPそしてMySQL組み合わせの例"</span></span><span>;
</span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">"(PHP)(そして)(MySQL)"</span></span><span>;
</span><span><span class="hljs-variable">$regs</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-variable">$pattern</span></span><span>, </span><span><span class="hljs-variable">$string</span></span><span>, </span><span><span class="hljs-variable">$regs</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"正常に一致します\n"</span></span><span>;
    </span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$regs</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">"マッチが失敗しました\n"</span></span><span>;
}
</span></span>

出力結果:

 <span><span>正常に一致します
</span><span><span class="hljs-title function_ invoke__">Array</span></span><span>
(
    [</span><span><span class="hljs-number">0</span></span><span>] =&gt; PHPそしてMySQL
    [</span><span><span class="hljs-number">1</span></span><span>] =&gt; PHP
    [</span><span><span class="hljs-number">2</span></span><span>] =&gt; そして
    [</span><span><span class="hljs-number">3</span></span><span>] =&gt; MySQL
)
</span></span>

この例では、正規表現(PHP)(および)(MySQL)は、 「PHP」「」「MySQL」という3つのサブパターンの一致する結果をキャプチャします。 $ reg [0]は一致する文字列全体を保存し、次の$ reg [1]$ regs [2] 、および$ reg [3]は、各サブパターンの一致する結果を保存します。

3。注意すべきこと

3.1正規表現を書く

MB_EREGで使用される正規表現構文は、一般的な正規表現に似ていますが、特にマルチビート文字を扱う場合は、いくつかの違いがあります。漢字を処理する際に、正規表現のキャラクターセットの範囲とスキルに特に注意してください。

例えば:

 <span><span><span class="hljs-variable">$pattern</span></span><span> = </span><span><span class="hljs-string">"^[\x{4e00}-\x{9fa5}]+$"</span></span><span>;  </span><span><span class="hljs-comment">// 漢字のみを一致させます</span></span><span>
</span></span>

この正規表現は、漢字を含む文字列のみと一致します(Unicodeエンコード範囲: \ x {4e00}から\ x {9fa5} )。

3.2パラメーターの合格

MB_EREGを使用する場合、 REGSパラメーターは参照形式で渡され、一致する結果がキャプチャされるようにする必要があります。それ以外の場合、 $ regsアレイはデータを返すことができません。

3.3関数の返品値

MB_EREGは、試合が成功したかどうかを示すブール値を返します。試合が成功した場合はtrueを返し、それ以外の場合はfalseを返します。

3.4コーディング設定

マルチバイト文字セットが適切に機能するようにするには、通常、 MB_EREGを呼び出す前に正しい文字エンコードを設定する必要があります。 MB_INTERNAL_ENCODING()を使用して、エンコードを設定できます。

 <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>

非UTF-8エンコードされた文字セット(GBKやShift-JISなど)を扱っている場合は、エンコードが正しく設定されていることを確認する必要があります。

3.5パフォーマンスの最適化

MB_EREGはマルチバイト文字セットに最適化された関数であるため、そのパフォーマンスは、通常の通常のマッチングと比較して、文字セットと文字列の長さの影響を受ける可能性があります。したがって、あまりにも多くの正規表現操作を回避するなど、大量のデータを処理する場合、最適化に注意を払うことをお勧めします。

4。概要

MB_EREG関数は、マルチバイト文字セットの定期的なマッチングを処理するためのPHPの強力なツールを提供します。 REGSパラメーターを正しく使用することにより、一致する結果を簡単にキャプチャして処理できます。正規表現の作成方法、パスパラメーター、およびセットエンコードを理解することで、文字列処理にMB_EREGをより効率的に使用できます。