阻止Preg_Replace更改<;A>;元素内容


Preventing Preg_Replace from changing <A> element contents

我目前编写了一个链接替换功能,可以查找某些关键字,并将所述关键字转换为相关内容的链接。

到目前为止,它一直运行得很好,只是偶尔它添加的链接中也包含一个关键字。

这个问题导致我的关键词变成了一堆hmtl代码,无论发生这种情况,链接都无法运行。

我计划在替换之前做最后一次检查,以验证关键字是否在元素中。

是否可以确定内容是否在这些标签之间?如果是,是如何做到的?

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

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

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

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

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

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

现在是VOODOO黑色再生魔法DOOM

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

但是要注意THEPONY,并考虑使用解析器。