【发布时间】:2011-05-15 15:43:59
【问题描述】:
我知道正则表达式不适合与 HTML 字符串一起使用,我已经查看了 PHP Simple HTML DOM Parser,但仍然相信这是要走的路。所有的 HTML 标签都将由我的论坛软件生成,因此它们将是一致且有效的 HTML。
我想做的是制作一个插件,它会在 HTML 字符串中找到关键字(或短语)列表,并用我指定的链接替换它们。例如,如果有人键入:
I use Amazon for that.
它将替换为:
I use <a href="http://www.amazon.com">Amazon</a> for that.
问题当然是如果 URL 中有“amazon”,它也会被替换。我用这个网站上的回调函数解决了这个问题,稍作修改。
但现在我还有一个问题,它仍然会替换开始和结束标签之间的单词。
<a href="http://www.amazon.com">My Amazon Link</a>
它将匹配“我的亚马逊链接”中的“亚马逊”
我真正需要的是一个正则表达式,可以匹配除<a href 和</a> 之外的任何地方的“amazon”
有什么想法吗?
【问题讨论】:
-
搜索一下这个问题已经被回答了无数次
-
fwiw 我进行了搜索,并查看了我输入主题时收到的每条建议。我可能措辞不佳,但我搜索了 2 天。
-
只是一个后续。在测试中,我发现如果有人将图像标签
包含到亚马逊资源中,它也会尝试将
标签内的单词转换为链接。我也修改了正则表达式以忽略
标记(以及 XHTML 图像标记,实际上是所有 XHTML 标记): (?![^|" />))
标签: php html regex preg-replace