2013-03-03 84 views
0

我有一個wordpress博客,其中我試圖使用名爲'搜索正則表達式'的插件刪除部分文章, (不問)正則表達式,wordpress和搜索正則表達式插件 - 刪除會員鏈接

現在,我旋轉了幾個月試圖找到一個正確的答案,我知道MySQL不完全支持正則表達式,它會可能會很痛苦,甚至嘗試這樣做,所以我決定使用這個插件。

我的WordPress博客有幾十萬的職位,幾乎在底部相同的代碼和代碼看起來是這樣的:

<!--more--> 
    <br /> 
    <center> 
    <table width="100%"> 
    <tbody> 
    <tr> 
    <td bgcolor="#000000" style="text-align: center; font-size: 16px; font-weight: bold;"> 
    <a href="http://myaffiliate.com/?q2=affiliateid" target="_blank" rel="nofollow" ><img title="blabla" src="http://someimage.com/somewhere></a><br /> 
    <a href="http://myaffiliate.com/?q2=affiliateid" rel="nofollow" target="_blank"><b>Some random Blah</b></a> 
    </td> 
    </tr> 
    </tbody> 
    </table> 
    </center> 

外面的一切是固定的,不會改變,而裏面的一切標籤隨着每個帖子而改變。

現在,這是多行文本,我嚴重的問題找到匹配的字符串,甚至工具,可以幫助我解決這個難題。我已經在幾個博客上發佈了這個消息,我認爲不是用相同的重複代碼發送垃圾信息,而是讓我的帖子中有1/3的內容可以通過single.php發送到

因此,我希望這從我的數據庫中永久刪除。

在此先感謝您的幫助。

回答

0

我不是博客或正則表達式的專家,但不能使用python腳本替換所有文本來替換它嗎?

像這樣的事情

re.sub(r'  <!--more--> 
<br /> 
<center> 
<table width="100%"> 
<tbody> 
<tr> 

[\.]+ 

</td> 
</tr> 
</tbody> 
</table> 
</center> 
', "") 

如果我沒看錯,應該找到所有的地方找到一個廣告的情況下,用一個空字符串:)

+0

我甚至不知道從哪裏開始用python,或者甚至可以用mysql來做到這一點。 – RegexNoob 2013-03-03 03:57:15

0

你可以嘗試像更換這個(測試前總是要備份)

global $wpdb; 
$posts=$wpdb->get_results("SELECT ID,post_content FROM {$wpdb->posts} LIMIT 0,1"); 
foreach($posts as $p){ 
    $pos = strpos($p->post_content, '<!--more-->'); 
    $more_content = substr($p->post_content,$pos); 
    if($pos !== false && strstr($more_content,"myaffiliate.com" && $p->ID>0)){ 
     $content = substr($p->post_content,0,$pos-1); 
     $wpdb->query($wpdb->prepare("UPDATE {$wpdb->posts} SET post_content='%s' WHERE ID=%d",$content,$p->ID)); 
    } 
} 

這是未經測試的,但你明白了。

這其中是否包含字符串"myaffiliate.com"<!--more-->後刪除帖子的內容部分(這有點懶惰匹配,但如果你需要它,我們可以用preg_matchpreg_replace完善它)。

您可以在測試時使用LIMIT 0,1,然後根據需要增加它。