需要RegEx大师

Aar*_*ron 1 regex glossary

我正在尝试编写一个脚本来解析一个HTML块,并根据给定的术语表匹配单词.如果找到匹配项,则会将该术语包装<a class="tooltip"></a>并提供定义.

它工作正常 - 除了两个主要缺点:

  1. 它匹配属性中的文本
  2. 它匹配<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);
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 5

"不要用正则表达式做到这一点."

使用HTML解析器,然后在识别它们时将正则表达式应用于HTML元素的内容.这将允许您轻松地操作许多不同的HTML结构变体,有效和其他,没有很多残酷和难以维护的正则表达式.

适用于PHP的健壮且成熟的HTML解析器

  • 你是如何链接到StackOverflow上关于这个问题的另一个问题而不是链接到这个问题:http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454 #1732454? (5认同)