Limite à la longueur des paramètres d'un modèle
Bonjour,
C'est pas exactement Texwheel parce que le code concerné est dans le core. Mais ça se manifeste dans le traitement des raccourcis typo. Bref.
J'ai constaté que si un modèle contenait trop de caractères, alors qu'il passait en PHP 5.6, il n'était plus interprété en PHP 7.
Test ici : https://contrib.spip.net/ecrire/?exec=article&id_article=5055
Et preuve du problème : https://3v4l.org/lqqIG qui montre qu'en PHP 5.6, la regex fonctionne, mais pas pour 7.0.32 - 7.3.0alpha2 (alors qu'avec un caractère de moins, ça passe partout : https://3v4l.org/k4bgd) Code construit à partir de https://git.spip.net/spip/spip/src/branch/3.2/ecrire/inc/lien.php#L294
Il semblerait que ce soit une limite de PCRE introduite avec PHP7 et son option jit activée par défaut :https://stackoverflow.com/questions/34849485/regex-not-working-for-long-pattern-pcres-jit-compiler-stack-limit-php7
En local, je n'ai plus le problème en ayant mis dans mes_options.php : ini_set('pcre.jit', 0);
https://regex101.com/r/DqmJMs/2 permet de voir que la regex fait énormément de backtrack et donc d'étapes : 19105 étapes.
J'ai idée que l'usage de conditions serait plus efficace, mais j'ai pas trouvé comment. https://www.rexegg.com/regex-conditionals.html#engines