使用查询从wordpress中删除帖子中的链接

时间:2013-10-14 09:10:44

标签: mysql hyperlink

我对mysql不是很好,所以我需要一些帮助。

我正在尝试从我的wordpress博客中删除一些特定的链接。我有很多外向链接到几个域,我想删除其中一个链接。例如,所有链接通往dontneedlink.com或以dontneedlink.com/(some子页面)开头

我已经尝试了

UPDATE wp_posts SET post_content = REPLACE (
post_content,
'Item to replace here',
Replacement text here');

但这对我来说不是神,因为我有很多关键词,并且有很多组合。

因此,我需要某种查询来识别包含dontneedlink.com的链接,并删除href文本并保持关键字保持不变。

<  a href=”http:// dontneedlink.com”>Test</a> -> Test 

<  a href=”http:// dontneedlink.com”>Test Again</a> -> Test Again

<  a href=”http:// dontneedlink.com/childpage”>Test Again 2</a> -> Test Again 2

这有可能吗? 这将节省我很多时间,而不是从一个帖子转到另一个帖子并手动删除。

2 个答案:

答案 0 :(得分:2)

您需要使用'like'来查找帖子和子字符串索引以删除不需要的内容

substring_index( substring_index(table.column, 'href=”', -1), '"',1)将解压缩您的链接

mysql> SELECT REPLACE(table_column, substring_index( substring_index(table.column, 'href=”', -1),  '"',1) , '');

这将为您提供没有链接的文本。你将离开

<  a href=””>Test</a>

然后执行另一个替换或子串索引以删除任何不需要的遗骸。

最后使用正确的过滤器在其中运行:

UPDATE wp_posts SET post_content = REPLACE (
post_content,
'Item to replace here',
Replacement text here')
where mycolumn like "%dontneedthisdomain.com%"

答案 1 :(得分:0)

扩展和简化@AdrianBR 运行以下SQL ...

UPDATE table_name SET column_name = REPLACE(column_name, substring_index( substring_index(column_name, 'href="', -1),  '"', 1),'');
UPDATE table_name SET column_name = REPLACE(column_name, '<a href="">','');
UPDATE table_name SET column_name = REPLACE(column_name, '<a href="" target="_blank">','');
UPDATE table_name SET column_name = REPLACE(column_name, '</a>','');

class和其他属性添加到链接时,生活变得棘手,但上述方法也应该可以调整以涵盖这些情况(取决于您的要求)