Comparaison de chaînes, champ sql de type TEXT

Eléphant du PHP | 337 Messages

01 juin 2020, 21:50

Bonjour à tous,

Je dois comparer deux champs de types TEXT dans une base de données pour vérifier s'ils sont identiques.
Il s'agit d'adresses, formatées comme ceci :

"SOCIETE SCHMURTZ
JEAN JACQUES BIDULE
28 AVENUE DU FROMAGE
55000 BAR LE DUC"

Il n'y a pas d'accent, tout est en majuscules.

Et j'obtiens des résultats assez étranges : parfois, les champs comportent des différences que je ne m'explique pas : il n'y a pas le même nombre de caractères selon les champs, alors que l'insertion dans la base a (théoriquement) eu lieu exactement de la même façon.

En décomposant des adresses caractère par caractère, je me suis rendu compte que certaines chaînes avaient des caractères blancs supplémentaires (espaces ? retours chariots ?). Alors j'ai fait un preg_replace pour enlever tous les caractères blancs avant de comparer, et ça fonctionne.

Mais quand même, j'aimerais bien comprendre :roll:

Mammouth du PHP | 1967 Messages

02 juin 2020, 13:10

Je pencherais pour des retour chariot et passage à la ligne qui sont parfois tous les deux parfois un des 2.

mais sans les chaines en question pas possible d'être sur.

Il est aussi possible qu'il y ait des espace à la fin du text.
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphant du PHP | 337 Messages

06 juin 2020, 02:44

Merci pour ta réponse Spols. Je n'ai pas vraiment trouvé l'origine du problème, du coup j'ai revu mon code en amont pour m'assurer que lors de l'inscription dans la base, les données soient réellement parfaitement formatées de la même façon.

Je soupçonne une histoire de jeu de caractères, car parfois mon script est appelé depuis une appli de paiement en ligne, et parfois directement depuis le site hôte...