3

こんにちは、正規表現にあまり熱心ではないので、誰かが助けてくれることを願っています。

次のようなスクリプト スニペットを取得しました。

<?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}*

助けてくれてありがとう。

4

2 に答える 2

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}*
于 2013-10-15T17:41:01.440 に答える