Code Colorer avec PHP7

J’ai récemment migré mon hébergement vers PHP 7. J’ai ensuite constaté que mes blogs sur lesquels étaient actif le plugin code colorer ne fonctionnaient plus. Malheureusement, ce plugin ne semble plus maintenu, et il ne faut donc pas compter sur une hypothétique mise à jour pour corriger le problème. Heureusement, certains proposent la solution. Je la reprend ici pour archives.

PHP Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in [...]/wp-content/plugins/codecolorer/codecolorer-core.php on line 50

Dans le fichier wp-content/plugins/codecolorer/codecolorer-core.php, trouvez les lignes suivantes (vers la ligne 50) :

/** Search content for code tags and replace it */
function BeforeHighlightCodeBlock($content) {
$content = preg_replace('#(\s*)\[cc([^\s\]_]*(?:_[^\s\]]*)?)([^\]]*)\](.*?)\[/cc\2\](\s*)#sie', '$this->PerformHighlightCodeBlock(\'\\4\', \'\\3\', $content, \'\\2\', \'\\1\', \'\\5\');', $content);
$content = preg_replace('
#(\s*)\<code(.*?)\>(.*?)\(\s*)#sie', '$this->PerformHighlightCodeBlock(\'\\3\', \'\\2\', $content, \'\', \'\\1\', \'\\4\');', $content);

return $content;
}

Et remplacer par :

/** Search content for code tags and replace it */
function BeforeHighlightCodeBlock($content) {
$content = preg_replace_callback('#(\s*)\[cc([^\s\]_]*(?:_[^\s\]]*)?)([^\]]*)\](.*?)\[/cc\2\](\s*)#si', function($matches){
return $this->PerformHighlightCodeBlock($matches[4], $matches[3], $matches[2], $matches[1], $matches[5]);
}, $content);
$content = preg_replace_callback('#(\s*)\<code(.*?)\>(.*?)\(\s*)#si', function($matches){
return $this->PerformHighlightCodeBlock($matches[3], $matches[2], '', $matches[1], $matches[4]);
}, $content);

return $content;
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *