我正在尝试使用正则表达式来解析一些纯文本,并将词汇表中的定义添加到与其匹配的任何单词中。我是这样做的:
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万年前的陨石是我们星球早期的残骸。鱼龙骨骼代表着大型爬行动物统治海洋的时代,恐龙统治着这片土地。猛犸象牙是最新冰河时代的遗迹,在此期间,大部分的景观特征得以发展。
答案 0 :(得分:0)
你可以试试2次:
1 - replace $term[$i]['title'] by something like XXX$iXXX
2 - replace XXX$iXXX by <a ... title="$terms[$i]['pageBody'] ...