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

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

  打开主题的 functions.php 文件,加入:

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

  代码是不会转义了,但是我发现其中的中文全部变成了乱码,如下图:

WordPress 中文乱码

  查看了后台和数据库,都是正常的,显然从数据库到前台显示还有个转码的过程,问题应该就出在这个过程里。后来仔细分析了上面这段代码,发现问题就出在 str_replace 这个函数。str_replace 并不是 WordPress 自定义的函数,是 PHP 自带的,它在中文字符替换方面确实存有问题,会产生乱码,跟字节有关,具体可以搜索一下。

  换了其它各种函数,重写代码,结果都失败,搞了很久。后来我把测试环境搬回本地,发现竟然好了!但是在服务器上就是出现中文乱码的情况。后来我意识到,本地和服务器的环境,不同的地方就是 WordPress 版本和 PHP 的版本,两者都有可能。我本地装的是 phpStudy,切换 PHP 版本非常方便,本来是 PHP 7.2.10,切换到 5.6.27 还是正常的,但是切换到 PHP 5.2.17 的时候,本地也报错出现了乱码,所以问题就在于 PHP 版本!所以说,PHP 版本问题对 WordPress 影响还是挺大的。

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

人已赞赏
建站经验

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

2020-12-29 22:45:52

建站经验

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

2020-12-30 10:45:03

下载说明

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

站长声明

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