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>, &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アレイに保存します。
マッチング結果をキャプチャするための鍵は、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>] => PHPそしてMySQL
[</span><span><span class="hljs-number">1</span></span><span>] => PHP
[</span><span><span class="hljs-number">2</span></span><span>] => そして
[</span><span><span class="hljs-number">3</span></span><span>] => MySQL
)
</span></span>この例では、正規表現(PHP)(および)(MySQL)は、 「PHP」 、 「」 、 「MySQL」という3つのサブパターンの一致する結果をキャプチャします。 $ reg [0]は一致する文字列全体を保存し、次の$ reg [1] 、 $ regs [2] 、および$ reg [3]は、各サブパターンの一致する結果を保存します。
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} )。
MB_EREGを使用する場合、 REGSパラメーターは参照形式で渡され、一致する結果がキャプチャされるようにする必要があります。それ以外の場合、 $ regsアレイはデータを返すことができません。
MB_EREGは、試合が成功したかどうかを示すブール値を返します。試合が成功した場合はtrueを返し、それ以外の場合はfalseを返します。
マルチバイト文字セットが適切に機能するようにするには、通常、 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など)を扱っている場合は、エンコードが正しく設定されていることを確認する必要があります。
MB_EREGはマルチバイト文字セットに最適化された関数であるため、そのパフォーマンスは、通常の通常のマッチングと比較して、文字セットと文字列の長さの影響を受ける可能性があります。したがって、あまりにも多くの正規表現操作を回避するなど、大量のデータを処理する場合、最適化に注意を払うことをお勧めします。
MB_EREG関数は、マルチバイト文字セットの定期的なマッチングを処理するためのPHPの強力なツールを提供します。 REGSパラメーターを正しく使用することにより、一致する結果を簡単にキャプチャして処理できます。正規表現の作成方法、パスパラメーター、およびセットエンコードを理解することで、文字列処理にMB_EREGをより効率的に使用できます。