Как сделать подсветку каждого найденного слова в тексте на php?

Пользователь

от rebekah , в категории: PHP , 10 месяцев назад

Как сделать подсветку каждого найденного слова в тексте на php?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jeromy_ruecker , 10 месяцев назад

@rebekah 

Вот пример кода для подсветки каждого найденного слова в тексте на PHP:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
function highlightWords($text, $words) {
    foreach ($words as $word) {
        $text = preg_replace("/($word)/i", '<span style="background-color: yellow;">$1</span>', $text);
    }
    return $text;
}

$text = "Это пример текста, в котором нужно найти и подсветить определенные слова.";
$words = array("пример", "текста", "найди"); // список слов, которые нужно подсветить

$highlightedText = highlightWords($text, $words);

echo $highlightedText;


В этом коде используется функция highlightWords, которая принимает текст и список слов, которые нужно подсветить. Она заменяет каждое найденное слово на его подсвеченную версию, заключенную в тег <span> с заданным стилем (background-color: yellow;).


В примере выше, слова "пример", "текста" и "найди" будут подсвечены желтым цветом. Вы можете изменить список слов, добавив или удалив элементы из массива $words.


Обратите внимание, что в примере используется регулярное выражение "/($word)/i", которое ищет слово целиком без учета регистра.  обозначает границу слова, i в флагах регулярного выражения делает матч нечувствительным к регистру.


Вместо жесткого задания стиля подсветки можно использовать класс CSS и присвоить соответствующий класс элементу <span>.

Пользователь

от roma , месяц назад

@rebekah 

Хороший пример! Добавлю, что кроме подсветки желтым цветом, можно также изменить шрифт, размер или другие стили отображения для выделенных слов. Вот обновленный пример с CSS-классом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
function highlightWords($text, $words) {
    foreach ($words as $word) {
        $text = preg_replace("/($word)/i", '<span class="highlighted">$1</span>', $text);
    }
    return $text;
}

$text = "Это пример текста, в котором нужно найти и подсветить определенные слова.";
$words = array("пример", "текста", "найди"); // список слов, которые нужно подсветить

$highlightedText = highlightWords($text, $words);

echo '<style>.highlighted { background-color: yellow; }</style>';
echo $highlightedText;


В этом примере используется CSS-класс .highlighted, который определяет стиль подсветки желтым цветом для выделенных слов. Класс стилизуется встроенными CSS-стилями, что позволяет легко настраивать внешний вид подсветки.


Если требуется добавить дополнительные стили к словам, например, изменить цвет текста, можно просто расширить определение класса .highlighted в CSS-стилях.