代码高亮插件Crayon Syntax Highlighter在PHP7.4报错解决办法

86次阅读

共计 3062 个字符,预计需要花费 8 分钟才能阅读完成。

在新版的 WordPress 中,系统已经多次提示升级 PHP,考虑到新版本更高效更安全,所以决定升级。

可是,升级完成后,网站出现大量报错,报错信息如下:

PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/wwwroot/www.pingzz.com/wpcontent/plugins/crayonsyntaxhighlighter/crayon_langs.class.php on line 340
 
Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/wwwroot/www.pingzz.com/wpcontent/plugins/crayonsyntaxhighlighter/crayon_langs.class.php on line 340
 
Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/wwwroot/www.pingzz.com/wpcontent/plugins/crayonsyntaxhighlighter/crayon_langs.class.php on line 340
 
Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/wwwroot/www.pingzz.com/wpcontent/plugins/crayonsyntaxhighlighter/crayon_langs.class.php on line 340
 
Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/wwwroot/www.pingzz.com/wpcontent/plugins/crayonsyntaxhighlighter/crayon_langs.class.php on line 340
 
Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/wwwroot/www.pingzz.com/wpcontent/plugins/crayonsyntaxhighlighter/crayon_langs.class.php on line 340
 
Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/wwwroot/www.pingzz.com/wpcontent/plugins/crayonsyntaxhighlighter/crayon_langs.class.php on line 340

如果上面的代码不直观的话,可以看下图,满屏的报错。

代码高亮插件 Crayon Syntax Highlighter 在 PHP7.4 报错解决办法

可以很直观的看出错误是来自一款叫 Crayon Syntax Highlighter代码高亮 插件,在 7.1 等版本中并没有这个报错,显而易见的是,肯定是新版本语法或表达的变化造成的报错。

解决的办法也很简单,找到报错的文件与行数,进行修改即可,报错的文件是 crayon_langs.class.php的 340 行。

代码高亮插件 Crayon Syntax Highlighter 在 PHP7.4 报错解决办法

一般我们可以通过更新插件能适配到最新版的 wordpress 和 PHP,但遗憾的是:

代码高亮插件 Crayon Syntax Highlighter 在 PHP7.4 报错解决办法

这款插件已经于 4 年前停止更新了,所以我们需要自己解决,解决的方法很简单:

修改这行代码为下方即可解决该报错信息。

PHP

1
return preg_replace(‘/[^w-+#]/msi’, , $id);

即加上转义符好就能解决。

正文完
 0