Archive for 8 décembre 2016

Code Colorer avec PHP7

8 décembre 2016

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;
}