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
Code language: JavaScript (javascript)
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
Code language: JavaScript (javascript)
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
Code language: JavaScript (javascript)
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.
Recherchez-vous un expert WordPress ou WooCommerce sur qui vous pouvez compter? Ne cherchez plus.
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…