2

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

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

我已经尝试了

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

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

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

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

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

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

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

4

2 回答 2

2

您需要使用“喜欢”来查找帖子和子字符串索引以删除不需要的内容

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=””&gt;Test</a>

然后执行另一个替换或子字符串索引以删除任何不需要的残留物。

最后使用正确的过滤器运行它:

UPDATE wp_posts SET post_content = REPLACE (
post_content,
'Item to replace here',
Replacement text here')
where mycolumn like "%dontneedthisdomain.com%"
于 2013-10-14T09:33:48.207 回答
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,但是上面的方法应该可以调整以涵盖这些情况(取决于您的要求)

于 2017-02-03T06:25:46.073 回答