Функция preg_replace не работает с переменными PHP, содержащими двойные кавычки (") - PullRequest
0 голосов
/ 08 марта 2012

$ слов творится "ive

$ string is 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 ]

1 голос
/ 08 марта 2012

Прежде всего, $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 по значению и просто 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
}
1 голос
/ 08 марта 2012

Используйте preg_quote () в вашем паттерне (т.е. $ words)

0 голосов
/ 08 марта 2012

Попробуйте

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