preg_match (string pattern, string subject [, arraymatches [, int flags]])
pattern で指定された正規表現に一致するコンテンツを対象の文字列で検索します。
一致が提供された場合は、検索結果が入力されます。 $matches[0] にはパターン全体に一致するテキストが含まれ、$matches[1] には括弧内の最初にキャプチャされたサブパターンに一致するテキストが含まれます。
私は初心者です。この関数は一致するターゲットを 1 つまでしか一致させることはできませんか?matches[0] とmatches[1] にはそれぞれ何が含まれていますか?
$s = 'func(123,456,789)';preg_match('/,?(\d+)/', $s, $m);print_r($m);preg_match_all('/,?(\d+)/', $s, $m);print_r($m);
Array( [0] => 123 [1] => 123)Array( [0] => Array ( [0] => 123 [1] => ,456 [2] => ,789 ) [1] => Array ( [0] => 123 [1] => 456 [2] => 789 ))
分からないならやってみろ
コンピュータサイエンスは実験科学であり、やらずに目を動かすだけでは不可能である
分からないなら、印刷して見てください。
$matches[1] には、最初にキャプチャされた括弧内のサブパターンと一致するテキストが含まれます。
ここで言及されている最初の括弧内のサブパターンは d+ を指しているのでしょうか? そうであれば、それは明らかです。すみません、自分で打ちたくないわけではないのですが、出力結果をBaiduで検索したのですが、ちょっと混乱してしまいました
(サブモードの開始
) サブの終了。 -mode
マニュアルは必読です!
preg_match_all を使用して複数一致
$matches[0] にはパターン全体に一致するテキストが含まれ、$matches[1] には最初にキャプチャされた括弧に一致するテキストが含まれます。サブパターンなど。
$matches[0] は境界のものも保存します
$matches[1] は通常の一致するもののみを保持します
たとえば、
$content = '<img src="http://www.csdn.net/abc.jpg">';preg_match_all('/<img.*?src=\"(http:\/\/.+\.(jpg|jpeg|gif|bmp|png))\">/i', $content, $matches); print_r($matches[0]);print_r($matches[1]);
$matches[0] には、パターン全体、$matches[1] には括弧内に最初にキャプチャされたサブパターンと一致するテキストが含まれます。
$matches[0] は境界のものも保存します
$matches[1] は通常の一致するもののみを保持します
たとえば、
$content = '<img src="http://www.csdn.net/abc.jpg">';preg_match_all('/<img.*?src=\"(http:\/\/.+\.(jpg|jpeg|gif|bmp|png))\">/i', $content, $matches); print_r($matches[0]);print_r($matches[1]);
今後同様の問題が発生した場合は、最初にそれを印刷できます