Преобразование этого preg_replace для соответствия слову с плюсомPhp

Кемеровские программисты php общаются здесь
Anonymous
Преобразование этого preg_replace для соответствия слову с плюсом

Сообщение Anonymous »

В PHP мне нужно выделить несколько заданных слов в строке, например, заключить найденные совпадения в тег .
Но если у меня есть слово, оканчивающееся на +, я не могу этого сделать.
Я понимаю, что проблема, приведенная ниже, заключается в том, что плюс не является словом и нарушает совпадение слов с флагом \b. Но как я могу написать это так, чтобы оно соответствовало и переносило все заданные слова, даже если данное слово заканчивается на + ?
$my_text = 'test c+ and javascript etc but NOT javascripter';

$words_to_highlight = array('javascript', 'c+');

foreach($words_to_highlight as $word){

$search_pattern = str_replace('+', '\\+', $word);

// this doesn't match replacement
echo "\n".preg_replace("/\b(".$search_pattern.")\b/i", '$1', $my_text);

// works if I remove the \b flag, but I don't want to match "javascript" inside "javascripter"
echo "\n".preg_replace("/(".$search_pattern.")/i", '$1', $my_text);

}

Вывод:
test c+ and javascript etc but NOT javascripter
test c+ and javascript etc but NOT javascripter

test c+ and javascript etc but NOT javascripter
test c+ and javascript etc but NOT javascripter

Что я хочу получить:
test c+ and javascript etc but NOT javascripter


Подробнее здесь: https://stackoverflow.com/questions/788 ... ith-a-plus

Вернуться в «Php»