この一致はなぜ間違っていますか。正規表現の問題です
$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 を追加することもできます。