? Perl スタイルの通常の関数 preg_match_all を続けましょう。
?
?
<?php> preg_match_all ($pattern, $subject, array &$matches = null, $flags = null, $offset = null) <?>?
? パラメータ: preg_match とまったく同じです。
?
? ? 関数: preg_match と同様に、 $subject 文字列内の $pattern と一致しますが、 preg_match_all は最初の結果が一致しても検索を停止せず、 $subject の終わりまで検索します。
?
? ? ? 戻り値: 関数関数によると、preg_match_all は $subject 全体を最後まで検索し、一致する結果をすべて返します。一致する結果の例を見てみましょう。
?
<?php> $url = 'http://www.sina.com.cn/abc/de/fg.php?fff.html?id=1'; $matches = array(); $pattern = '/(\.){1}[^.|?]+(\?){1}/i'; $count = preg_match_all($pattern, $url, $matches); var_dump($count); var_dump($matches); <?>?出力
int 2 array (size=3) 0 => array (size=2) 0 => string '.php?' (length=5) 1 => string '.html?' (length=6) 1 => array (size=2) 0 => string '.' (length=1) 1 => string '.' (length=1) 2 => array (size=2) 0 => string '?' (length=1) 1 => string '?' (length=1)?この例は、
http://www.sina.com.cn/abc/de/fg.php?fff .html?id=1 文字列内の 2 つの赤い部分。 $matches の要素も配列型であることがわかります。$matches[0] は一致結果を格納し、$matches[1] は正規 1 の一致結果を格納し、$matches[2] は正規 2 の一致結果を格納します。 。直感的ではないかもしれませんが、下の写真を見ると理解できます ?
黒い矢印は $pattern の正規マッチング、緑色の矢印は準正規マッチングです。
<?php> $url = 'http://www.sina.com.cn/abc/de/fg.php?fff.html?id=1'; $matches = array(); $pattern = '/(\.){1}[^.|?]+(\?){2}/i'; $count = preg_match_all($pattern, $url, $matches); var_dump($count); var_dump($matches); <?>?出力
int 0 array (size=3) 0 => array (size=0) empty 1 => array (size=0) empty 2 => array (size=0) empty?