试图显示词汇表中单词的定义

时间:2010-06-30 14:27:14

标签: php regex

我正在尝试使用正则表达式来解析一些纯文本,并将词汇表中的定义添加到与其匹配的任何单词中。我是这样做的:

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);
}

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=""但如果定义是多个单词并且匹配不是第一个单词则不起作用。

有什么想法吗?

示例输入文字:

  

在过去的4.9亿年中,德文的景观已经发现了超过40,000种化石,岩石和矿物质。这颗450万年前的陨石是我们星球早期的残骸。鱼龙骨骼代表着大型爬行动物统治海洋的时代,恐龙统治着这片土地。猛犸象牙是最新冰河时代的遗迹,在此期间,大部分的景观特征得以发展。

1 个答案:

答案 0 :(得分:0)

你可以试试2次:

1 - replace $term[$i]['title'] by something like XXX$iXXX
2 - replace XXX$iXXX by <a ... title="$terms[$i]['pageBody'] ...