我试图使用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);
}然后我返回$string,但是如果其中一个定义包含一个稍后定义的单词,那么定义也会被添加到其中,所以我不想包含在title=""中的单词。我尝试过使用(?!<=title="),但如果定义为多个单词,并且匹配不是第一个单词,则这是行不通的。
有什么想法吗?
示例输入文本:
超过40,000个化石、岩石和矿物是德文地貌在过去4.9亿年中发生的重大变化的证据。这颗有450万年历史的陨石是我们星球早期的遗迹。鱼龙骨架代表了大型爬行动物主宰海洋和恐龙统治陆地的时代。猛犸象牙是最新冰河时代的遗迹,在此期间,今天的大部分景观特征都是发展起来的。
发布于 2010-06-30 15:01:47
您可以尝试2次传球:
1 - replace $term[$i]['title'] by something like XXX$iXXX
2 - replace XXX$iXXX by <a ... title="$terms[$i]['pageBody'] ...https://stackoverflow.com/questions/3150195
复制相似问题