防止Preg_Replace更改<a> element contents</a>

时间:2014-09-10 15:33:35

标签: php preg-replace

我目前有一个链接替换功能,我写了一个找到某些关键字并将关键词转换为相关内容的链接。

到目前为止,它一直运作良好,但有时,它添加的链接也包含关键字。

这个问题导致我的关键字在发生这种情况时变成了混乱的hmtl代码和非工作链接。

我打算做的是在替换之前进行最后一次检查,以验证关键字是否在元素内。

是否可以确定内容是否在这些标签之间?如果是这样,它是如何完成的?

这些是我用来查找关键字的当前模式。

$pattern = "/\b $kw \b/";
$pattern2 = "/\b $kw. \b/";
$pattern3 = "/\b $kw, \b/";

1 个答案:

答案 0 :(得分:1)

首先,您的模式可以合并为一个:

$pattern = "/\b $kw[.,]? \b/";

我质疑那里的空白。你可能不想要它们。

$pattern = "/\b$kw[.,]?\b/";

现在 VOODOO BLACK REGIC的魔力 DOOM!

$pattern = "/<a\b.*?<\/a>(*SKIP)(*FAIL)|\b$kw[.,]?\b/";

但要注意THE PONY并考虑使用解析器。