ホームページ >バックエンド開発 >PHPチュートリアル >preg_match_all() の小さな問題がわかりません。解決してください。

preg_match_all() の小さな問題がわかりません。解決してください。

WBOY
WBOYオリジナル
2016-06-23 14:21:451015ブラウズ

preg_match_all("/d*/","5555", $images);
出力される $images 配列は次のとおりです: Array ( [0] => Array ( [0] => 5555 [1] => ) )
2 次元配列に空のインデックスがあるのはなぜですか!


ディスカッションへの返信 (解決策)

一致するものがないようです

var_dump($images) {

[0]=>
array(2) {
[0]=> ;
最後に一致する数字は 0 個だけです
d+ はなくなりました

このフォーラムがあれば、すべてをすぐに学ぶことができます!ありがとう!あなたが言ったことは正しいはずです、そしてそれは理にかなっています!

2階で正解! ! !

preg_match_all ("/d(.*)d/",'5dasdad66',$haha);
出力配列は次のとおりです: Array([0] => Array ([0] => 5dasdad66) [1] = > Array ( [0] => dasdad6 ))
preg_match_all ("/(.*)/",'5dasdad',$haha1);

出力配列は次のとおりです: Array([0] => Array ( [0 ] => 5dasdad [1] => ) [1] => Array ( [0] => 5dasdad [1] => ))

なぜ「*」は 0 からそれ以上を意味するのかすべてのインデックスは空ですが、最初のインデックスは空ではありません。理由は何ですか!

var_dump($images);

array(1) {

[0]=>

string(4) "5555"
=> string(0) ""
}
}
あなたのルールは d* なので * * は 0 からそれ以上に一致することを意味するので、最後には 0 の数字のみに一致します

d+ になります。


preg_match_all ("/d(.*)d/",'5dasdad66',$haha);
出力配列は次のとおりです: Array([0] => Array ([0] => 5dasdad66) [1] ] => ; Array ( [0] => dasdad6 ))
preg_match_all ("/(.*)/",'5dasdad',$haha1);
出力配列は次のとおりです: Array([0] => Array ( [0] => 5dasdad [1] => ) [1] => Array ( [0] => 5dasdad [1] => ))
なぜ「*」は 0 からそれ以上も意味するのか2 番目のインデックスは両方とも空のインデックスを持ち、最初のインデックスさえありません。理由は何ですか!

d(.*)d は少なくとも 1 つの数字と一致することを意味します。当然、スペースはありません。
(.*) は 0 文字以上の文字と一致することを意味します。

d(.*)d は少なくとも 1 つの数字と一致することを意味します。当然、スペースはありません。
(.*) は 0 文字以上の文字と一致することを意味します。
ありがとうございます!

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。