我正在尝试编写一个脚本来解析 HTML 块并将单词与给定的术语表进行匹配。如果找到匹配项,它会将术语包装进去<a class="tooltip"></a>
并提供定义。
它工作正常——除了两个主要缺点:
- 它匹配属性中的文本
- 它匹配已经在
<a>
标签中的文本,创建了一个嵌套链接。
有没有办法让我的正则表达式只匹配不在属性中而不在<a>
标签中的单词?
这是我正在使用的代码,以防相关:
foreach(Glossary::map() as $term => $def) {
$search[] = "/\b($term)\b/i";
self::$lookup[strtoupper($term)] = $def;
}
return preg_replace_callback($search, array(&$this,'replace'),$this->content);