親父プログラマーの呟き

WXY

WordPress

[WordPress]PHP7.3になったらプラグイン「Crayon Syntax Highlighter」でWarning: preg_replace()

更新日:

プラグイン「Crayon Syntax Highlighter」

記事内でコードを美しく表示させるプラグイン「Crayon Syntax Highlighter」

さくらインターネットからPHPバージョンアップのお知らせ

ご利用のさくらのレンタルサーバにおきまして、2019年7月3日(水)に
PHPのバージョンを7.2から「7.3」へ自動的に変更させていただきます。

と連絡が来ていたが、特に問題ないだろうと思っていたら、バージョンアップ後に

Warning: preg_replace()発生

Warning: preg_replace(): Compilation failed: invalid range in character class at offset 4 in /home/kids-infinity/www/wxy/wp/wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php on line 340

と言うワーニングがでて

管理画面の記事詳細画面もこんな感じで、記事の登録や変更も出来ない。

原因は

warninngなので、エラー表示をしないようにすれば回避可能だが、気持ち悪いので修正することにした。

ちょっと調べてみたら、PHP7.3から、正規表現で「-」ハイフンもエスケープしないとワーニングになるなしい。。。

https://stackoverflow.com/questions/24764212/preg-match-compilation-failed-invalid-range-in-character-class-at-offset

対処方法

と言うことで、wp-content/plugins/crayon-syntax-highlighter/crayon_langs.class.php の340行目を見ると

return preg_replace('/[^\w-+#]/msi', '', $id);

これだ

return preg_replace('/[^\w\-+#]/msi', '', $id);

ハイフンをエスケープして、更新。

結果

ワーニングは無くなりました。

ただ、プラグイン「Crayon Syntax Highlighter」はメンテされていないようだし、コード表示用の別のものを探そう。。。。

追伸

Highlighting Code Block を使ってみよう!

-WordPress
-, ,

Copyright© WXY , 2021 All Rights Reserved Powered by STINGER.