Bonjour,
Pour un code source et des entrants identiques, j'observe une différence de résultat avec la fonction mb_strlen entre PHP 8.2 et PHP 8.3.
En PHP 8.2.14, j'ai loggé les éléments suivants :
mb_internal_encoding() = UTF-8
mb_strlen(c•,¼D•KK“Z`2=iĉÁ¹óM£) = 20
En PHP 8.3.2 :
mb_internal_encoding() = UTF-8
mb_strlen(c•,¼D•KK“Z`2=iĉÁ¹óM£) = 24
Dans les deux cas, l'encodage pris en compte est UTF-8. La chaîne est visiblement la même (et de plus, elle est issue de la même donnée entrante et passée par le même code source). Mais, dans un cas, la longueur calculée par mb_strlen est 20 et, dans l'autre, 24.
Je n'arrive pas à déterminer ce qui expliquerait cette différence. Je n'observe pas d'écart de configuration (même version d'Apache 2.4.58.1 dans les deux cas). Rien d'évident non plus dans le changelog des versions PHP.
Le problème se pose dans le cadre d'une vérification de mot de passe qui, par conséquent, ne fonctionne plus en PHP 8.3.2.
Quelqu'un aurait-il une idée sur ce qui peut poser cette situation ? Ou sur les points à vérifier pour identifier cet écart de fonctionnement ?
Merci d'avance.
Partager