WordPress php7.3移行時にCrayon Syntax Highlighterでエラーが発生する
WordPressで、php7.3移行時にCrayon Syntax Highlighterでエラー「Uncaught Error: Call to a member function id() on array in」が発生した場合の原因と対処法を記述してます。
環境
- WordPress 5.5.1
エラー全文
Crayon Syntax Highlighterを使用しているページで発生
Notice: Undefined offset: 0 in /home/users/xxx/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 532
Fatal error: Uncaught Error: Call to a member function id() on array in /home/users/xxx/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php:36
Stack trace: #0 /home/users/xxx/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php(538):
CrayonFormatter::format_code('', Array, Object(CrayonHighlighter)) #1 [internal function]: CrayonFormatter::delim_to_internal(Array)
#2 /home/users/xxx/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php(516): preg_replace_callback('#()#msi', 'CrayonFormatter...', 'double x, y, an...')
#3 /home/users/xxx/wp-content/plugins/crayon-syntax-highlighter/crayon_highlighter.class.php(166):
CrayonFormatter::format_mixed_code('double x, y, an...', Object(CrayonLang), Object(CrayonHighlighter))
#4 /home/users/xxx/wp-content/plugins/crayon-syntax-highlighter/crayon_highlighter.class.php(186):
CrayonHighlighter->proces in /home/users/xxx/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 36
原因
php7.3で正規表現のマッチングが変わったため
対処法
一番いいのは、こちらのサイトより修正版をダウンロードして、アップする方法
ダウンロードした「crayon-syntax-highlighter-2.8.6.zip」を解凍して、
中のファイルを、全て「/wp-content/plugins/crayon-syntax-highlighter」にアップする
「crayon_langs.class.php」の以下をコメントアウトして、コードを記述してもエラーは消えるが
「Notice: A non well formed numeric value encountered in」などの警告などにも対応する必要があり、面倒なので、前述した方法が一番楽かと思われます。
// Override
function clean_id($id) {
$id = CrayonUtil::space_to_hyphen( strtolower(trim($id)) );
//return preg_replace('/[^\w-+#]/msi', '', $id);
return preg_replace('/[^\w+#-]/msi', '', $id);
}
-
前の記事
javascript for-ofでサロゲートペア文字列も抽出する 2020.12.05
-
次の記事
go言語 円周率と黄金比を表示する 2020.12.05
コメントを書く