ホームページ  >  記事  >  バックエンド開発  >  Preg_match_all の使用体験の共有_PHP チュートリアル

Preg_match_all の使用体験の共有_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:39:54951ブラウズ

preg_match_all — グローバル正規表現マッチングを実行します

手順

コードをコピー コードは次のとおりです:

int preg_match_all ( string pattern, string subject, arraymatches [, int flags] )

pattern で指定された正規表現に一致する件名内のすべてのコンテンツを検索し、結果を flags で指定された順序で一致させます。
最初の一致を検索した後、それ以降の検索は前の一致の終わりから開始されます。

PREG_PATTERN_ORDER と PREG_SET_ORDER に特に注意してください

フラグは次のフラグの組み合わせにすることができます (PREG_PATTERN_ORDER と PREG_SET_ORDER を一緒に使用しても意味がないことに注意してください):

PREG_PATTERN_ORDERを使用する場合

$matches[0] がすべてのパターン一致の配列、$matches[1] が最初の括弧内のサブパターンと一致する文字列の配列になるように、結果を並べ替えます。 (つまり、$matches[0] [0] はすべてのパターン一致の 2 番目の項目、$matches[0] [1] はすべてのパターン一致の 2 番目の項目、$matches[1] [0] は次の一致です各項目。括弧内の最初の項目 $matches[1] [0] は、各括弧内の 2 番目の項目と一致します)

コードをコピーします コードは次のとおりです:

preg_match_all ("|<[^>]+>(.*)]+ >|U ","例:
これはテストです
",$out, PREG_PATTERN_ORDER);

print $out[0][ 0]." , ".$out[0][1]."n";
print $out[1][0].", ".$out[1][1]."n"; >

この例では次のように出力されます:

コードをコピーします コードは次のとおりです:
例: ,
これはテストです

例: , thisテストです

つまり、$out[0] にはパターン全体に一致する文字列が含まれ、$out[1] には HTML タグのペアの間にある文字列が含まれます。

PREG_SET_ORDERを使用する場合

$matches[0] が最初の一致セットの配列、$matches[1] が 2 番目の一致セットの配列、というように結果を並べ替えます。 (つまり、$matches[0] [0] は最初の一致セットの完全一致文字列、$matches[0] [1] は最初の一致セットの最初の括弧内の完全一致文字列です)

コードをコピーします コードは次のとおりです:
preg_match_all ("|<[^>]+>(.*)]+ >|U ","例:
これはテストです
",$out, PREG_SET_ORDER);
print $out[0][0 ].", ".$out[0][1]."n";
print $out[1][0].", ".$out[1][1]."n"; ;


この例では次のように出力されます:

コードをコピーします コードは次のとおりです:
例: 、例:
これはテストです
、これテストです


この例では、$matches[0] は一致結果の最初のセットで、$matches[0][0] にはパターン全体に一致するテキストが含まれ、$matches[0][1] には最初のサブパターンに一致するテキストが含まれます。パターンなど。同様に、$matches[1] は 2 番目の一致セットであり、以下同様です。

PREG_OFFSET_CAPTURE

このフラグが設定されている場合、各一致結果に関連付けられた文字列オフセットも返されます。これにより、返された配列の値が変更され、その中の各セルも配列になることに注意してください。最初の項目は一致した文字列で、2 番目の項目はサブジェクト内のそのオフセットです。このタグは PHP 4.3.0 以降で使用できます。

タグが指定されていない場合は、PREG_PATTERN_ORDER が想定されます。

パターン全体が一致した回数 (おそらくゼロ) を返し、エラーが発生した場合は FALSE を返します。

例 1. テキストメッセージからすべての電話番号を取得する

コードをコピー コードは次のとおりです:
preg_match_all ("/(? (d)? )? (?(1) [-s] ) d-d/x"," 555-1212 または 1-800-555-1212 に電話してください"、$phones);
?>


例 2. 一致する HTML タグを検索する (貪欲)

コードをコピーします コードは次のとおりです:

// \2 は逆参照の例です。PCRE での意味は
// 正規表現自体の 2 番目の括弧セット内の内容と一致する必要があります。この場合、
// は([w]+)。文字列は二重引用符で囲まれているため、バックスラッシュを追加するには
// が必要です。
$html = "太字クリックしてください";
preg_match_all ("/(<([w]+)[^> ]*>)(.*)(\2>)/", $html, $matches);
for ($i=0; $iecho "一致しました: ".$matches[0][$i]."n";
echo "パート 1: ".$matches[1][$i]."n";
echo "パート 2: ".$matches[3][$i]."n";
echo "パート 3: ".$matches[4][$i]."nn";
}
?>

この例では次のように出力されます:

コードをコピー コードは次のとおりです:

一致: 太字
パート 1:
パート 2: 太字
パート 3:
一致: クリックしてください
パート 1:
パート 2: クリックしてください
パート 3:

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/728085.html技術記事 preg_match_all — グローバル正規表現マッチングの手順 コードをコピーします。 コードは次のとおりです: int preg_match_all ( string pattern, string subject, arraymatches [, int flags] ) in subjec...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。