解决LaTeX for WordPress插件在PHP 7.0下失效的问题

最近WordPress管理后台提示我升级WordPress版本到5.2.1,但由于5.2.1最低要求的PHP版本是5.6,我使用的PHP比这个版本还低,因此只能升级PHP版本,同时又考虑到现在PHP 7比较主流,因此我从PHP 5.4直接升到了PHP 7。

之后有一位网友在评论里说网页里的LaTeX公式没了,我一看,果然所有LaTeX公式都不能显示了。由于我使用的是LaTeX for WordPress这个插件来渲染的数学公式,因此怀疑这个插件被PHP 7搞挂了。

网上搜索之后找到了答案,果然是这个插件不支持PHP 7环境,插件代码调用的 preg_replace 函数使用了一个废弃的 /e 修饰符,而这个修饰符在PHP 7中被完全废弃了,因此整个插件挂掉。
修改方法为,在WordPress管理后台的插件代码编辑页面里,把此插件代码里的如下两行:

$text= preg_replace('/&#(\d+);/me',"chr(\\1)",$text); #decimal notation
$text= preg_replace('/&#x([a-f0-9]+);/mei',"chr(0x\\1)",$text); #hex notation

分别改为如下两行:

$text= preg_replace('/&#(\d+);/m',"chr(\\1)",$text); #decimal notation
$text= preg_replace('/&#x([a-f0-9]+);/mi',"chr(0x\\1)",$text); #hex notation

文章来源:http://www.codelast.com/
之后保存修改,清除WordPress缓存(如果你用了某些缓存插件的话),再刷新页面,搞定!

文章来源:https://www.codelast.com/
➤➤ 版权声明 ➤➤ 
转载需注明出处:codelast.com 
感谢关注我的微信公众号(微信扫一扫):

wechat qrcode of codelast

发表评论