preg_match_all 进行全局正则表达式匹配,这篇文章主要介绍下preg_match_all的相关资料,需要的朋友可以参考下
preg_match_all — 进行全局正则表达式匹配
说明
代码如下:
int preg_match_all ( string pattern, string subject, array matches [, int flags] )
在 subject 中搜索所有与 pattern 给出的正则表达式匹配的内容并将结果以 flags 指定的顺序放到 matches 中。
搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。
特别注意PREG_PATTERN_ORDER 和PREG_SET_ORDER
flags 可以是下列标记的组合(注意把 PREG_PATTERN_ORDER 和 PREG_SET_ORDER 合起来用没有意义):
如果使用PREG_PATTERN_ORDER
对结果排序使 $matches[0] 为全部模式匹配的数组,$matches[1] 为第一个括号中的子模式所匹配的字符串组成的数组,以此类推。(即$matches[0] [0]为全部模式匹配中的每一项,$matches[0] [1]为全部模式匹配中的第二项,$matches[1] [0]为匹配每一个括号中的第一项,$matches[1] [0]为匹配每一个括号中的第二项)
代码如下:
]+>(.*)[^>]+>|U","
example: this is a test
",$out, PREG_PATTERN_ORDER);
print $out[0][0].", ".$out[0][1]."\n";
print $out[1][0].", ".$out[1][1]."\n";
?>
本例将输出:
代码如下:
example: ,
this is a test
example: , this is a test
因此,$out[0] 包含匹配整个模式的字符串,$out[1] 包含一对 HTML 标记之间的字符串。
如果使用PREG_SET_ORDER
对结果排序使 $matches[0] 为第一组匹配项的数组,$matches[1] 为第二组匹配项的数组,以此类推。(即$matches[0] [0]为第一组匹配项中完整匹配的字符串,$matches[0] [1]为第一组匹配中完整匹配第一个括号中的字符串)
代码如下:
]+>(.*)[^>]+>|U","
example: this is a test
",$out, PREG_SET_ORDER);
print $out[0][0].", ".$out[0][1]."\n";
print $out[1][0].", ".$out[1][1]."\n";
?>
本例将输出:
代码如下:
example: , example:
this is a test
、 これはテストです
この例では、$matches[0] は一致結果の最初のセットで、$matches[0][0] にはパターン全体に一致するテキストが含まれ、$matches[0][1] には最初のサブパターンに一致するテキストが含まれます。 、などで終わります。同様に、$matches[1] は 2 番目の一致セットであり、以下同様です。
PREG_OFFSET_CAPTURE
このフラグが設定されている場合、一致が発生するたびに、関連付けられた文字列オフセットも返されます。これにより、返された配列の値が変更され、その中の各セルも配列になることに注意してください。最初の項目は一致した文字列で、2 番目の項目はサブジェクト内のそのオフセットです。このタグは PHP 4.3.0 以降で使用できます。
タグが指定されていない場合は、PREG_PATTERN_ORDER が想定されます。
パターン全体が一致した回数 (おそらくゼロ)、またはエラーの場合は FALSE を返します。
例 1. テキストメッセージからすべての電話番号を取得する
コードは以下のように表示されます。
例 2. 一致する HTML タグを検索する (貪欲)
コードは以下のように表示されます。
太字
クリックしてください";
preg_match_all ("/(<([w]+)[^>]*>)(.*)(\2>)/", $html, $matches);
for ($i=0; $i
この例では次のように出力されます。
コードは以下のように表示されます。
一致しました: 太字のテキスト
パート 1:
パート 2: 太字のテキスト
パート 3:
一致しました: クリックしてください
パート 1:
パート 2: クリックしてください
パート 3:
http://www.bkjia.com/PHPjc/730223.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/730223.html技術記事 preg_match_all は、グローバル正規表現マッチングを実行します。この記事では、preg_match_all の関連情報を主に紹介します。必要な方は、グローバル正規表現マッチングについての preg_match_all を参照してください。