嗨,我希望有人可以提供帮助,因为对正则表达式不太热。
获得如下脚本片段..
<?php
$news="test message {image=abc} more text text text {image=def}";
$news=preg_replace_callback("/\{image=.*\}/i",function ($matches) { $field=$matches[0]; return "*".$field."*"; }, $news);
echo $news;
?>
然而,当我运行它时,它会返回
test message *{image=abc} more text text text {image=def}*
相反,我希望它返回..
test message *{image=abc}* more text text text *{image=def}*
感谢您的帮助。
答案 0 :(得分:1)
使用non-greedy
代替.*?
制作正则表达式.*
:
$news = "test message {image=abc} more text text text {image=def}";
$news = preg_replace_callback("/\{image=.*?\}/i",function ($matches) {
return "*".$matches[0]."*"; }, $news);
echo $news;
<强>输出强>
test message *{image=abc}* more text text text *{image=def}*
答案 1 :(得分:1)
为何回调?
$news = preg_replace("/(\{image=[^\}]+\})/i", "*$1*", $news);