PHP preg_match问题

时间:2010-11-14 14:59:54

标签: php regex preg-match

content.tpl

tratata 'hey' tratata <br/>
okay 'aaaaa' <br/>
'trtata' <br/>
echo 'tratata'hmmmm'traatata';
'hello' tratata <br/>

如何仅在回声中更改所有引号?

我需要

tratata 'hey' tratata <br/>
okay 'aaaaa' <br/>
'trtata' <br/>
echo 'tratata\'hmmmm\'traatata';
'hello' tratata <br/>

谢谢

1 个答案:

答案 0 :(得分:3)

回调非常简单:

$var = preg_replace_callback("`(?<=echo ')(.+)(?=';)`iU", function ($matches) { return addslashes($matches[1]); }, $var)

首先,我们匹配echo引用的字符串(没有别的),然后我们在我们发现的内容上应用addslashes函数。 ungreedy(U)选项很重要,因此。+与整个字符串不匹配。