У меня есть следующий метод, который проверяет наличие слова 'example' в тексте, и если он находит его, он оборачивает его span
:
function highlightWords($dreams) {
$wrap_before = '<span class="highlight_match">';
$wrap_after = '</span>';
$key_words = 'example';
$dreams = json_decode($dreams);
foreach ($dreams as &$value) {
$value->dream = preg_replace("/($key_words)/i",
"$wrap_before$1$wrap_after", $value->dream);
}
return $dreams;
}
Я попытался преобразовать переменную $key_words
в массив, чтобы можно было указать несколько слов в качестве параметра, но это всегда возвращает ошибку. Могу ли я сделать это с таким подходом?
1 ответ
Используйте implode()
, чтобы преобразовать массив ключевых слов в строку, которая вы можете использовать в качестве регулярного выражения.
Похоже, вы хотите найти полное слово для одного из нескольких ключевых слов, поэтому используйте оператор чередования (символ |
) в качестве разделителя.
Например, учитывая массив:
$key_words = ['foo', 'bar', 'baz'];
$key_words = implode('|', $key_words);
Дает следующую строку:
foo | bar | baz
Который затем можно использовать для создания регулярного выражения ключевых слов:
// /(foo|bar|baz)/i
preg_replace("/($key_words)/i",
"$wrap_before$1$wrap_after", $value->dream);
Надеюсь это поможет :)
Похожие вопросы
Новые вопросы
php
PHP - это широко используемый высокоуровневый, динамический, объектно-ориентированный и интерпретируемый язык сценариев, в первую очередь предназначенный для серверной веб-разработки. Используется для вопросов о языке PHP.