如何从WordPress的所有帖子中删除带有拉丁文字的锚标签?

时间:2017-11-20 17:50:26

标签: mysql sql wordpress

我有一个波斯语的WordPress网站。它被黑了,网站上的每个帖子都有一些广告链接。

我想从我的网站中删除所有这些链接。我可以在这些链接中找到的唯一模式是它们包含英文字符。

我需要一个像这样的sql命令:

update wp_posts set post_content =
replace(post_content,'Text to find','text to replace with');

但我需要它来定位其中包含英文字符的锚链接。 我也需要在ACF字段上运行它。

1 个答案:

答案 0 :(得分:0)

如果您可以在PHP(更简单)中执行此操作,则可以使用:

preg_replace('/[^\x{0600}–\x{06FF}\x{0750}-\x{077F}\x{08A0}–\x{08FF}\x{FB50}–\x{FDFF}\x{FE70}–\x{FEFF}\x{10E60}–\x{10E7F}\x{1EE00}—\x{1EEFF}]/u', '', $my_content_from_db);

(我假设您删除的不是波斯语,而是转换为不属于阿拉伯语Unicode字符集的所有内容。)

(我还假设你能够从数据库中提取所有帖子,修改它们并将它们写回数据库。如果没有,我可以用更多信息编辑这个答案。)

如果您必须在SQL中执行此操作,请尝试使用相同的正则表达式the library in this answer

请注意,这将删除不在阿拉伯语脚本中的所有。人们有时会在文本中使用外语单词(在您的情况下,可能是非阿拉伯字符的单词)。这些将被删除。