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 278Code 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.3Code 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 escapedCode 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.
Des obstacles techniques ? Je trouve des solutions sur-mesure pour que votre site WordPress/WooCommerce fonctionne sans accroc.
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…