пытаясь показать определения слов в глоссарии - PullRequest
1 голос
/ 30 июня 2010

Я пытаюсь использовать регулярные выражения для анализа простого текста и добавления определения из глоссария к любым словам, которые ему соответствуют.Я делаю это так: </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 миллиона лет является пережитком ранних дней нашей планеты.Скелеты ихтиозавров представляют собой время, когда крупные океаны доминировали над океанами, а динозавры правили землей.Клыки мамонта - это остатки последнего ледникового периода, в течение которого развивались большинство современных особенностей ландшафта.

1 Ответ

0 голосов
/ 30 июня 2010

Вы можете попробовать в 2 прохода:

1 - replace $term[$i]['title'] by something like XXX$iXXX
2 - replace XXX$iXXX by <a ... title="$terms[$i]['pageBody'] ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...