У меня есть функция подсветки PHP, которая выделяет некоторые слова жирным шрифтом.
Ниже приведена функция, и она прекрасно работает, за исключением случаев, когда массив: $ words содержит одно значение: b
Например, кто-то ищет: jessie j price tag feat bob
Это будет иметь следующие записи в массиве $ words: jessie, j, цена, тег, feat, b, o, b
Когда появляется «b», вся моя функция работает неправильно, и она отображает целую кучу неправильных HTML-тегов.Конечно, я могу удалить любые значения 'b' из массива, но это не идеально, так как выделение не работает должным образом с определенными запросами.
Этот пример сценария:
function highlightWords2($text, $words)
{
$text = ($text);
foreach ($words as $word)
{
$word = preg_quote($word);
$text = preg_replace("/\b($word)\b/i", '<b>$1</b>', $text);
}
return $text;
}
$string = 'jessie j price tag feat b o b';
$words = array('jessie','tag','b','o','b');
echo highlightWords2($string, $words);
Выводит:
<<<b>b</b>><b>b</b></<b>b</b>>>jessie</<<b>b</b>><b>b</b></<b>b</b>>> j price <<<b>b</b>><b>b</b></<b>b</b>>>tag</<<b>b</b>><b>b</b></<b>b</b>>> feat <<b>b</b>><b>b</b></<b>b</b>> <<b>b</b>>o</<b>b</b>> <<b>b</b>><b>b</b></<b>b</b>>
И это происходит только потому, что в массиве есть "b".
Ребята, можете ли вы увидеть что-нибудь, что я мог бы изменить, чтобы заставить его работатьправильно?