Я пытаюсь использовать регулярные выражения для анализа простого текста и добавления определения из глоссария к любым словам, которые ему соответствуют.Я делаю это так: </p>
<pre><code>for ( $i = 0; $i < count($terms); $i++ ) {
$search = '|(?<=\b)('.preg_quote($terms[$i]['title']).')(?=\b)|i';
$replace = '<a class="tt2" rel="tooltip" title="'.$terms[$i]['pageBody'].'">$1</a>';
$string = preg_replace($search,$replace,$string);
}
Затем я возвращаю $string
, однако, если одно из определений содержит слово, которое определено позже, определение также добавляется к этому, так чтоЯ не хочу включать слова, которые находятся в пределах title=""
.Я попытался поместить (?!<=title=")
, но это не работает, если определение состоит из нескольких слов, и совпадение не первое слово.
Есть идеи?
пример ввода текста:
Более 40 000 окаменелостей, камней и минералов свидетельствуют о жизненно важных изменениях, которые произошли в ландшафте Девона за последние 490 миллионов лет.Метеорит возрастом 4,5 миллиона лет является пережитком ранних дней нашей планеты.Скелеты ихтиозавров представляют собой время, когда крупные океаны доминировали над океанами, а динозавры правили землей.Клыки мамонта - это остатки последнего ледникового периода, в течение которого развивались большинство современных особенностей ландшафта.