@L1MO

Как придавать тексту определенные значения, если он был найден среди текста?

Вечер добрый, работаю с движком, есть вывод всего текста с помощью
return '<div class="bbWrapper">' . trim($output) . '</div>';


Мне нужно чтобы из определенного массива слов
$words = ['bla', 'test', 'lol'];

Я разбил текст из 1 ретерна на слова с помощью
preg_match_all('/[^\W\d][\w]*/u', trim($output), $result);


Мне нужно, чтобы искало из прег матча выше и добавляло найденому слову
"<div class="bbWrapper"> Текст бла бла бла <div>Найденное слово</div> текст бла  <div>Найденное слово</div></div>"


Т.е, если оно найдёт текст, то добавит ему див.
  • Вопрос задан
  • 55 просмотров
Пригласить эксперта
Ответы на вопрос 2
SADFGHJAETJER
@SADFGHJAETJER
<?php
$words = ['bla', 'test', 'lol'];
$input = "tested bla 12312 f  fh dfhs hdfh test lol  qwagsd  lol t e  st test";

echo join(" ", array_map(fn($word) => in_array($word, $words) ? "<div>{$word}</div>" : $word, explode(" ", $input)));


1. Разбил строку на слова по пробелу.
2. Перебираешь все слова, если слово есть в массиве $words - врапаешь в див.
3. Собираешь новый массив обратно в строку.

Ну или регулярка

preg_replace(array_map(fn($w) => "|$w|si", $words), '<div>$0</div>', $input);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы