English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
preg_match_all関数は、グローバル正則表現マッチを执行するために使用されます。
int preg_match_all ( string $pattern , string $subject [, array &$matches [, int $flags = PREG_PATTERN_ORDER [, int $offset = 0 ]]] )
subject中のすべてのpatternに一致する正則表現の一致結果を検索し、それらをflagで指定された順序でmatchesに输出します。
最初の一致が見つかった後、子シーケンスは最後の一致位置から検索を続けます。
パラメータ説明:
$pattern: 検索するパターン、文字列形式。
$subject: 入力文字列。
$matches: 多次元配列、すべての一致結果を出力パラメータとして出力します。配列のソートはflagsで指定されます。
$flags:以下のマークを組み合わせて使用できます(注意:PREG_PATTERN_ORDERとPREG_SET_ORDERは同時に使用できない):
PREG_PATTERN_ORDER: 結果は、$matches[0]が完全なパターンのすべての一致を保存するようにソートされます、$matches[1]は、最初のサブグループのすべての一致を保存し、それ以降も同様です。
PREG_SET_ORDER: 結果は、$matches[0]が最初に一致したすべての一致(サブグループを含む)を含むようにソートされます、$matches[1は、2回目に一致したすべての一致(サブグループを含む)を含む配列で、それ以降も同様です。
PREG_OFFSET_CAPTURE: このマークが渡された場合、各発見されたマッチングが返される際に、ターゲット文字列に対する相対的なオフセットを増加させます。
offset: 通常、検索はターゲット文字列の開始位置から行われます。オプションのoffsetパラメータは、ターゲット文字列から指定された位置から検索を開始するために使用されます(単位はバイトです)。
完全マッチングの回数を返します(0の場合もあり)または、エラーが発生した場合はFALSEを返します。
<?php
$userinfo = "Name: <b>PHP</b> <br> タイトル: <b>プログラミング言語</b>";
preg_match_all ("/<b>(.*)<\/b>/U", $userinfo, $pat_array);
print_r($pat_array[0]);
?>
以下に実行結果を示します:
配列 ( [0] => <b>PHP</b> [1] => <b>プログラミング言語</b> )
<?php
//\\2これは後向き参照の例です。これはpcreに、正規表現の第二の丸括弧(ここでは([\w])をマッチングする必要があることを伝えます。+))
//マッチングされた結果。ここでは、二つの反斜線を使用しているのは、ここで二重引用符を使用しているためです。
$html = "<b>bold text</b><a href=howdy.html>click me</a>";
preg_match_all("/(<([\w+)[^>]*>)(.*?)(<\/\\2>)/", $html, $matches, PREG_SET_ORDER);
foreach ($matches as $val) {
echo "matched: " . $val[0] . "\n";
echo "part 1: " . $val[1] . "\n";
echo "part 2: " . $val[2] . "\n";
echo "part 3: " . $val[3] . "\n";
echo "part 4: " . $val[4];
}
?>
以下に実行結果を示します:
matched: <b>bold text</b> part 1: <b> part 2: b part 3: bold text part 4: </b> matched: <a href=howdy.html>click me</a> part 1: <a href=howdy.html> part 2: a part 3: click me part 4: </a>