Lors de la mise à jour d’un site vers PHP 7.4, je suis tombé sur cette erreur :
preg_match(): Compilation failed: invalid range in character class at offset 20 session.php on line 278
Depuis PHP 7.3, le moteur PCRE – qui est responsable de la gestion des expressions régulières – a été migré vers PCRE2.
Or, il s’avère que PCRE2 est plus strict dans la validation des pattern et c’est la raison pour laquelle, après la mise à jour de PHP, certaines expressions régulières ne peuvent plus être compilées correctement.
Voici un exemple d’expression régulière qui fonctionnait avant PHP7.3:
preg_match('/[\w-.]+/', ''); // this will not work in PHP7.3
Voici maintenant le même exemple mais qui sera désormais valide sous PHP 7.3 et les versions ultérieures :
preg_match('/[\w\-.]+/', ''); // the hyphen needs to be escaped
Comme vous pouvez le constater dans le deuxième exemple, il faut maintenant échapper le tiret (hyphen) avec un backslash.
Une fois la modification faite, plus d’erreur à ce niveau.
Vous souhaitez réaliser un nouveau projet WordPress ou WooCommerce, ajouter de nouvelles fonctionnalités, ou améliorer les performances de votre site? Faîtes appel à mon expertise.
Merci pour le coup de pouce.
C’est quand même débile. Je dois revoir tout mes fichiers de tous mes sites pour voir si j’en ai pas d’autre…