Regex 正则表达式、wordpress和搜索正则表达式插件-删除附属链接
我有一个wordpress博客,我正在尝试使用名为“搜索正则表达式”的插件删除我作为广告放在底部的部分帖子文本(不要问) 现在,我花了几个月的时间试图找到一个正确的答案,我知道mysql不完全支持regex,而且这样做可能会很痛苦,所以我决定使用这个插件 我的wordpress博客有数千篇文章,底部的代码几乎相同,代码如下所示:Regex 正则表达式、wordpress和搜索正则表达式插件-删除附属链接,regex,wordpress,replace,Regex,Wordpress,Replace,我有一个wordpress博客,我正在尝试使用名为“搜索正则表达式”的插件删除我作为广告放在底部的部分帖子文本(不要问) 现在,我花了几个月的时间试图找到一个正确的答案,我知道mysql不完全支持regex,而且这样做可能会很痛苦,所以我决定使用这个插件 我的wordpress博客有数千篇文章,底部的代码几乎相同,代码如下所示: <!--more--> <br /> <center> <table width="100%"
<!--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>
外部的一切都是固定不变的,标签内部的一切都会随着每个帖子而改变
现在,这是多行文本,我很难找到匹配的字符串,甚至是可以帮助我解决这个难题的工具。我已经在几个博客上发布了这篇文章,我想我可以通过single.php简单地将它包含进来,而不是用相同的重复代码(占我文章内容的1/3)来滥发我的博客
所以,我想把它从我的数据库中永久删除
提前感谢您的帮助。我不是博客或正则表达式方面的专家,但您不能使用python脚本替换所有文本来替换它吗 像这样的
re.sub(r' <!--more-->
<br />
<center>
<table width="100%">
<tbody>
<tr>
[\.]+
</td>
</tr>
</tbody>
</table>
</center>
', "")
re.sub(r'
[\.]+
', "")
如果我没有错的话,它应该会找到所有发现广告的情况,并用一个空白字符串替换:)您可以尝试类似的方法(在测试之前总是备份)
global$wpdb;
$posts=$wpdb->get_results(“从{$wpdb->posts}限制0,1中选择ID,发布内容”);
foreach(员额为$p){
$pos=strpos($p->post_内容,”);
$more\u content=substr($p->post\u content,$pos);
如果($pos!==false&&strstr($more_内容,“myaffiliate.com”&&&p->ID>0)){
$content=substr($p->post_content,0,$pos-1);
$wpdb->query($wpdb->prepare(“更新{$wpdb->posts}设置帖子内容='%s',其中ID=%d',$content,$p->ID));
}
}
这是未经测试的,但你明白了
这将删除
之后的帖子内容部分,如果它包含字符串“myaffiliate.com”
(这有点懒匹配,但如果需要,我们可以使用preg\u match
或preg\u replace
对其进行优化)
您可以在测试时使用
限制0,1
,然后根据需要增加该限制 我甚至不知道从哪里开始使用python,或者它甚至可以使用mysql。
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));
}
}