Я работаю над веб-сайтом, который включает глоссарий, в котором объясняются несколько слов. Дополнительная информация Я хочу описать термины в статье, поставив их в пробелы с атрибутом title.Обертывание слов с заголовком span с PHP
Я получаю все термины из базы данных в массиве:
$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 являются заменой правильно. Но повторив второй раз над текстом для поиска и замены слова2, он снова находит слово1 - в названии уже созданного интервала.
Так что результат для 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
О людях, я искал решение в течение недели ..:/Большое спасибо! Но strtr чувствителен к регистру, не так ли? Есть ли какой-либо способ или альтернатива, чтобы он не учитывал регистр? –
@ chris.ribal, если вы посмотрите в разделе комментариев на странице руководства 'strtr', есть некоторые' stritr'-реализации. – Petah