Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式、wordpress和搜索正则表达式插件-删除附属链接_Regex_Wordpress_Replace - Fatal编程技术网

Regex 正则表达式、wordpress和搜索正则表达式插件-删除附属链接

Regex 正则表达式、wordpress和搜索正则表达式插件-删除附属链接,regex,wordpress,replace,Regex,Wordpress,Replace,我有一个wordpress博客,我正在尝试使用名为“搜索正则表达式”的插件删除我作为广告放在底部的部分帖子文本(不要问) 现在,我花了几个月的时间试图找到一个正确的答案,我知道mysql不完全支持regex,而且这样做可能会很痛苦,所以我决定使用这个插件 我的wordpress博客有数千篇文章,底部的代码几乎相同,代码如下所示: <!--more--> <br /> <center> <table width="100%"

我有一个wordpress博客,我正在尝试使用名为“搜索正则表达式”的插件删除我作为广告放在底部的部分帖子文本(不要问)

现在,我花了几个月的时间试图找到一个正确的答案,我知道mysql不完全支持regex,而且这样做可能会很痛苦,所以我决定使用这个插件

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



外部的一切都是固定不变的,标签内部的一切都会随着每个帖子而改变

现在,这是多行文本,我很难找到匹配的字符串,甚至是可以帮助我解决这个难题的工具。我已经在几个博客上发布了这篇文章,我想我可以通过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));
   }
}