WordPress 中文乱码之谜终于解开!附 Pre 标签防代码转义方法

  昨天晚上遇到一个 WordPress 的问题,折腾了很久很久。就是我想在文章中加入一段 PHP 代码,一般我是用 pre 标签来包括整个代码段的,目的是; s d = 3 S W g防止代码转义。但果那段代码就是会转义,于是我查找解决方法。

  打开主题的 functions\ : r f.php 文件,加入o Z :

add_filter( 'the_content', 'pre_content_filter', 0 );
function pre_content_filter( $content ) {
return preg_replace_callback( '|<pre.*>(.*)</pre|isU' , 'convert_pre_entities', $content );
}
function convert_pre_entities( $matches ) {
return str_replace( $matches[1], htmlentities( $matches[1] ), $matches[0] );
}

  代码是不会转义了,但S r 1 ) 5 e I是我发现其中的中文全部变成了乱码,如下图:

WordPress 中文乱码之谜终于解开!附 Pre 标签防代码转义方法

  查看了后台和数据库,都是正常S ; E I 3 _ h的,显然从数据库到前台显示还有个转码的过程,问题应该就出在这个过程里。后来仔细分析了上面这段代码,发现问题就出Q * v H e . = g在 str_replace 这个函数。str_replace 并不是 WordPress 自定义的函数,是 PHP 自带的,它在中文字符替换方面确实存有问题,b y \ [ O l G会产生乱码,跟字节有关,具体可以搜索一下。

  换了其它各种函数,重写代码,结果都失败,[ . _ @ [搞了很久E K b i [ I。后来我把测试环境搬回本地,发现竟然好了!但是在服务器上就是出现中文乱码的情况。后来我意识到,本地和服务器的环境,不同的地方就是 WordPress 版本和 PHPE M V I , 7 的版本,两者都有可能。我本地装的是 phpStudy,切换f Y J PHP 版本非常方便,本来是 PHP 7.2.10,切换到 5.6.27 还是o h a Z Z 6 9 ; B正常的,但是切换到2 @ , , PHP 5.2.17 的9 { o p ^时候,本地也报错出现了乱码,所以问题就在于 PHP 版本!所以5 z W D h说,PHP 版~ 6 J o 5 G x本问题对 WordPress 影响还是挺大的。

  早上把服务器上的 PHP 版本升级到 7.2.15,一切正常了! 中文乱码问题搞定!效果见:https://www.hack520.com/446.h0 f : V k B = 1tml

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress 防垃圾评论:添加数字算术验证码

2020-12-29 22:45:52

WordPress教程

WordPress 开启 HTTPS 后首页正常而文章页 404 原来是这么回事!

2020-12-30 10:45:03

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索