»

批量删除WordPress文章中特定HTML标签的三种方法

    WordPress  
防盗链重定向访问访客查询网络安全CDN的问题网站优化Apache数据库Wp Super Cache身份认证wordpress插件windows主机缓存建站SEO伪静态前端网站镜像工作CDN浏览器爬虫

博主最近在修改文章CSS后发现,由于很多样式被移动到了CSS文件中,所以在博文中出现了大量成对的<span>标签,未添加任何属性,类似于如下形式:

  • <span>文字:一对标签</span>
  • <span><span>文字:两对标签</span></span>
  • <span><span><span>文字:三对标签</span></span></span>

以上三种单独或成对出现,看着确实不爽,也对SEO优化不太友好,所以需要把这些标签删除。

一、采用以下形式的代码:

  1. // 去掉未添加任何属性的标签  
  2. function special_tag_remove( $content = '' ){  
  3.     if ( preg_match ( '/<span><span><span>(.*?)<\/span><\/span><\/span>/i', $content ) ) {  
  4.     $content = preg_replace( "/<span><span><span>(.*?)<\/span></span><\/span>/i", '$1', $content );  
  5.     }  
  6.     if (preg_match ( '/<span><span>(.*?)<\/span><\/span>/i', $content) ) {   
  7.     $content = preg_replace( "/<span><span>(.*?)<\/span><\/span>/i", '$1', $content );  
  8.     }  
  9.     if ( preg_match ('/<span>(.*?)<\/span>/i', $content) ) {   
  10.     $content = preg_replace( "/<span>(.*?)<\/span>/i", '$1', $content );  
  11.     }  
  12. }  
  13. add_filter( 'the_content', 'special_tag_remove', 10 );  

以上代码在 WordPress 里面用,可以解决三重嵌套<span>标签的问题。需要将老文章刷新一下,后台文章不用改代码,如果有纯静态缓存,需要清空缓存。如果有四对标签,将上述代码改一改即可。以上代码也可以举一反三,套用到其他未添加任何属性的标签或者满足一些其他特殊用途。

当然,刷新文章页面的时候并未向数据库中写入上述数据,如果你想写入数据库,则需要将相应文章重新在可视化编辑模式下保存一下。

 

二、数据库命令操作

如果你想批量写入数据库中,本文的情况只能使用正则表达式,而使用字符串的表达式,如下面的两种方式不能实现:

在 WordPress 中:

  1. global $wpdb;  
  2. $wpdb->query( "UPDATE wp_post SET post_content = replace( post_content, 'old', 'new' ) ");  

或 在数据库中使用命令:

本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利

  1. UPDATE wp_posts SET post_content = REPLACE( post_content, 'old', 'new' );  

 

MySQL 8.0.17 及以上版本才支持使用正则表达式:

  1. $wpdb->query('UPDATE wp_posts SET post_content = REGEXP_REPLACE( post_content, "正则表达式""替换为的内容" )');  

 

本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利

三、使用插件 Search Regex 进行搜索替换

Search Regex 这个 WordPress 插件的好处就是可以使用正则命令搜索、批量替换文章或数据库中其他地方的字符串。可以在 WordPress 官方页面下载该插件。

使用举例:

例如可以使用  /2016/08/([^>]+?).jpg  这样的命令批量替换 jpg 格式图片为 webp 格式图片: /2016/08/$1.webp 

可以将  <span><a([^>]+?)>([^>]+?)</a></span>  中的<span>标签去掉: <a$1>$2</a>

以此类推,去掉其他形式的 <span> 标签。可根据具体情况而定。

本文禁止全文转载。任何形式转载请联系作者(时光在路上 www.timezls.com) Copyright © 2023. All Rights Reserved

时光在路上扫码阅读、分享
  • 版权声明:该文章由 时光在路上 发表,共 1706字。除非特别标注来源,否则为原创。详见《版权声明》部分。
  • 转载请注明:文章标题和文章链接 - 时光在路上 - 也可直接“复制本文链接” 或 使用右边二维码分享本文 →