前言:升级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年未更新了,原文是2020年写的)
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、效果
效果非常不错,很多主题,和字体可以选择,还有中文版本。
6、最后
这款插件应该很多童鞋再用,确实不错,功能强大,设置简单,加载速度也非常快,实在是高亮插件里非常好的选择之一。
原文转自:大鸟博客