preg_replace函数在包含双引号的PHP变量上不起作用(“)

时间:2012-03-08 16:56:59

标签: php regex preg-replace double-quotes

$ words is creat“ive

$ string是Recreat“ive

两者都是通过结果集从数据库获得的

function highlightWords($string,$words) {
           $string = preg_replace("/$words/i", "<font style=\"background-color:yellow;\">$0</font>",$string); //To highlight $words in $string
}

preg_replace函数不适用于上述代码。但是如果代码是

,它就可以工作
function highlightWords() {

    $words='creat"ive';
    $string='Recreat"ive'

    $string = preg_replace("/$words/i", "<font style=\"background-color:yellow;\">$0</font>",$string);
}

3 个答案:

答案 0 :(得分:1)

在你的模式上使用preg_quote()(即$ words)

答案 1 :(得分:1)

首先,$new_words不存在。我认为你的意思是$newwords秒,你的函数没有对函数外的$string做任何事情,因为它是函数的本地函数。如果你想修改它,请通过引用传递它。

function highlightWords(&$string,$words) {
    $newwords="background color changed words";
    $string = preg_replace("/$words/i", "<font style=\"background-color:yellow;\">$newwords</font>",$string); //To highlight $words in $string
}

最好只传递$string in value并简单地return新值:

function highlightWords($string,$words) {
    $newwords="background color changed words";
    return preg_replace("/$words/i", "<font style=\"background-color:yellow;\">$newwords</font>",$string); //To highlight $words in $string
}

答案 2 :(得分:0)

尝试

preg_replace('/'.$words.'/i',  "<font style=\"background-co...