6 votes

Deux cordes identiques, mais de longueurs différentes. Coupées, nettoyées, etc.

J'ai deux chaînes de caractères, l'une est générée par PHP et stockée dans une base de données avec 128 caractères. La chaîne générée est envoyée par courrier électronique à l'utilisateur, qui doit la saisir.

Maintenant, pour une raison quelconque, celui de l'utilisateur (avec moi qui teste), est de 132 caractères à travers var_dump . Quand je echo ils sont exactement les mêmes. Même chose pour var_dump . Sauf le nombre de caractères. D'où viennent ces 4 caractères supplémentaires (invisibles) ?

15voto

aularon Points 6305

Essayez

var_dump(bin2hex($str1));
var_dump(bin2hex($str2));

ou avec

var_dump(htmlspecialchars($str1));
var_dump(htmlspecialchars($str2));

pour inspecter ce qui est différent, une fois trouvé, collez ici les différents morceaux pour que nous puissions comprendre d'où vient la différence.

EDITAR:

C'est un & codé en tant que &amp; noter que & <-> &amp; sont différents de 4 caractères. Je pense que ce qui se passe, c'est que vous envoyez des emails en texte clair, mais que vous entitisez la chaîne de caractères, donc tous les & deviennent &amp; .

1voto

Iznogood Points 7535

L'un est probablement UTF-8 et l'autre iso-8859-1 ou un autre encodage différent.

Essayez utf_decode() sur l'un d'entre eux et voyez si cela correspond.

1voto

mark Points 704

En complément de la réponse de @aularon, en utilisant :

var_dump(htmlspecialchars($str1)) ;

var_dump(htmlspecialchars($str2)) ;

a révélé qu'il s'agissait en effet &amp; dans une chaîne et pas dans l'autre.

Pour le résoudre, j'ai utilisé htmlspecialchars_decode($str) et ça a fait l'affaire.

0voto

gnud Points 26854

Ce site pourrait être un problème d'encodage sournois, où une chaîne a un caractère de combinaison comme å est stockée comme un caractère unicode, et l'autre chaîne est stockée comme deux caractères distincts.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X