Я работаю над сайтом, который включает глоссарий, в котором объясняются несколько слов.
Кроме того, я хочу описать термины в статье, поместив их в промежутки с атрибутом title.
Я получаю все термины из базы данных в массиве:
$terms = array(
'word1' => 'This is a short description of word1',
'word2' => 'word2 maybe has something to do with word1'
);
Строка, содержащая текст, может быть:
$string = 'In this sentence I want to explain both, word1 and word2.';
Я попытался просто заменить слова, содержащиеся в строке, на простой str_ireplace ():
foreach($terms as $term => $description)
{
$string = str_ireplace($term, '<span class="help" title="' . $description . '">' . $term . '</span>', $string);
}
Что происходит сейчас, это то, что слова1 и слово2 заменены правильно. Но, повторяя второй раз по тексту для поиска и замены word2, он снова находит word1 - в заголовке уже созданного промежутка.
Таким образом, результат для word1 будет выглядеть так:
<span class="help" title="This is a short description of <span class="help" title="This is a short description of word1">word1</span>word1</span>
Как я могу запретить PHP заменять одно и то же слово в теге заголовка существующего диапазона? Я не хотел бы использовать preg_replace () для этого, чтобы не анализировать html к нему.
Как я мог это сделать?
Прекрасные приветствия из Германии
Chris