2013-10-14 42 views
1

我對mysql不太好,所以我需要一些幫助。使用查詢刪除wordpress中帖子的鏈接

我想從我的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

你需要使用「喜歡」找職位和子指數,以除去不需要的內容

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%" 
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等屬性添加到鏈接,但上面的方法應該可以調整以覆蓋這些情況(取決於您的要求)