Wordpress代码高亮插件Crayon Syntax Highlighter在PHP7.4报错preg_replace()的解决办法
-
前言:升级PHP7.4有一段时间了,发现有部分之前的文章时打开报错,原来是换个插件兼容性的问题;在网络上找到了修复方案,这里复制过来,做个备份,以防后续再遇到该问题无法解决。
Crayon Syntax Highlighter是一款强大的代码高亮插件,强大的地方主要是它拥有多种高亮主题和多种显示字体来展示代码让使用者有足够多的搭配选择,另一方面就是其加载速度快,可以解析代码中的html,并且着色效果更好。
安装的方法很简单只要在wordpress后台搜索名称安装设置即可,后台设置灵活,插入代码方便。遗憾的是插件4年没有更新了。如果你在PHP7.4环境中安装这款插件,你的wordpress会提示:
Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /www/wwwroot/dd.fdao.xyz/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340
错误截图:
#解决方法#
解决之前顺带说下如何安装该插件,其实插件很好用,就是4年不更新了。(实际已经6年未更新了)
1、安装插件
安装插件的话,请在wp后台搜索Crayon Syntax Highlighter 安装即可,看图:
别看错了,是那款4年没更新的插件。
2、解决问题
在7.1版本中没发现这个问题,看来是PHP版本太高,因为新版本语法或表达的变化造成的报错。
解决的办法也很简单,找到报错的文件与行数,进行修改即可,报错的文件是crayon_langs.class.php的340行。
1)找到错误的文件:
wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340
2)修改340行,找到报错的代码:
return preg_replace('/[^\w-+#]/msi', '', $id);
修改后的代码如下:
return preg_replace('/\[^\w-+#]/msi', '', $id);
3)为啥会报错,因为 [ 是正则中特殊字符,需要用 \ 反斜杠转义
3、拓展
正则中常见的需要转义的特殊字符?
\. \/ \[ \( \( \d
4、效果
效果非常不错,很多主题,和字体可以选择,还有中文版本。
5、最后
这款插件应该很多童鞋再用,确实不错,功能强大,设置简单,加载速度也非常快,实在是高亮插件里非常好的选择之一。
推荐阅读
文章标签:
版权声明: 本文除特别说明外均由 麒麟在线 原创
本文链接: https://www.70ol.com/jishu/315.html,尊重共享,欢迎转载,请自觉添加本文链接,谢谢!
分享本文: 请填写您的分享代码。
呃 本文暂时没人评论 来添加一个吧
发表评论