Posted on 9 months ago.

まとめ記事を書きました

WordPressのとても便利な「brBrbr」プラグイン。
これ、PHP 7にしたらバグったんです。
これを修正しました。

$brbr = preg_replace('/(<pre.*?>)(.*?)<\/pre>/ise', "clr_br('$0')", $brbr);
$brbr = preg_replace('/(<script.*?>)(.*?)<\/script>/ise', "clr_br('$0')", $brbr);
$brbr = preg_replace('/(<form.*?>)(.*?)<\/form>/ise', "clr_br('$0')", $brbr);

上記のスクリプトを下記に置き換えます。

$brbr = preg_replace_callback('/(<pre.*?>)(.*?)<\/pre>/is', function($m) {return clr_br($m[0]);}, $brbr);
$brbr = preg_replace_callback('/(<script.*?>)(.*?)<\/script>/is', function($m) {return clr_br($m[0]);}, $brbr);
$brbr = preg_replace_callback('/(<form.*?>)(.*?)<\/form>/is', function($m) {return clr_br($m[0]);}, $brbr);

これでOK。
と言う事で、PHP 7にてFatal Errorを吐き出した
・LAMP Version Checker
・AutoExternalLink
・brBrbr
をやっとこさ修正しました。

参考:
PHP7でpreg_replaceのe修飾子の挙動が変わるので要注意です。
preg_replace
preg_replace_callback

4 thoughts on “PHP 7にしたらバグったWordPressプラグイン「brBrbr」のエラーを修正しました

  1. とても素晴らしい記事をありがとうございます!
    この記事のおかげでbrbrbrを再度使うことが出来るようになりましたm(_ _)m

  2. こんにちは。
    コメントありがとうございます。
    お役に立てて良かったです^^
    brbrbr、便利ですよね~。
    このプラグインが無いと困るので、自力で修正した次第です(笑)

  3. WordPressのプラグイン「brBrbr」のエラー原因と対処方法!

Speak your mind!