ホームページ  >  記事  >  バックエンド開発  >  この正規表現の問題はなぜ間違っているのでしょうか?

この正規表現の問題はなぜ間違っているのでしょうか?

WBOY
WBOYオリジナル
2016-06-13 13:40:24836ブラウズ

この一致はなぜ間違っていますか。正規表現の問題です

$txt="[face='黑体']12345[/face][face='黑体']ははは[/ face] ";
$return=preg_match_all("/[face='(.*)'](.+?)[/face]/",$txt,$tar);
echo "< ";
print_r($tar);
?>

私の一致は [face='任意の数値'] と [/face] で終わる最も短い文字列を意味します。 。 。

何が問題ですか? ? ?

ここでは任意の数値は除外されているようです[/face]

Array
(
[0] =>Array
(
[0] => ; [face='黑体']12345[/face][face='黑体']はは[/face]
)

[1] => 配列
(
0] => 黑体']12345[/face][face='黑体
)

[2] => 配列
(
[0] => ハハ
)

)

結果は間違っています。一致する最長の文字列、ハロー

------解決策--- ------ ------------
……/[face='(.*)']…… => ……/[face='(.*?)']……

いいえ、それはただの欲です、結果は好きなだけスティック
------解決策---------
/[face='(.*)' ] (.+?)[/face]/U U を追加することもできます。

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