Problème avec explode et les apostrophes
Résolu
steller91
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
steller91 Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
steller91 Messages postés 15 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Pour un de mes sites j'utilise une base de donnée dont les informations sont stocké sous la forme suivant:
Pour récupérer ces informations j'utilise du php et notamment la fonction explode avec le séparateur point-virgule:
Mon problème étant que mon explode me pose problème avec les apostrophes, c'est à dire que, au lieux d'avoir (dans mon exemple) quatre résultats ( «Bonjour», «Bonsoir», «Bonne nuit» et «Bon'ap») j'en ai cinq ( «Bonjour», «Bonsoir», «Bonne nuit», «Bon'» et «ap» ).
J'ai tenté de mettre dans ma bdd des antislash mais rien à faire.
Si quelqu'un à une idée je suis preneur car je ne vois pas pourquoi.
Merci d'avance
Steller
Pour un de mes sites j'utilise une base de donnée dont les informations sont stocké sous la forme suivant:
$values = "Bonjour;Bonsoir;Bonne nuit;Bon'ap";
Pour récupérer ces informations j'utilise du php et notamment la fonction explode avec le séparateur point-virgule:
explode( ";", $values );
Mon problème étant que mon explode me pose problème avec les apostrophes, c'est à dire que, au lieux d'avoir (dans mon exemple) quatre résultats ( «Bonjour», «Bonsoir», «Bonne nuit» et «Bon'ap») j'en ai cinq ( «Bonjour», «Bonsoir», «Bonne nuit», «Bon'» et «ap» ).
J'ai tenté de mettre dans ma bdd des antislash mais rien à faire.
Si quelqu'un à une idée je suis preneur car je ne vois pas pourquoi.
Merci d'avance
Steller
4 réponses
Après plusieurs test est notamment en faisant un var_dump sur ma variable $values j'ai remarqué que l'apostrophe à une longueur de 5 or les autre caractère on une longueur logique de 1 (y compris les caractère accentué).
Résultat:
Et le résultat avec un espace à la place de l'apostrophe:
Je n'ai toujours pas trouvé de solution donc je suis preneur au plus offrant ^^.
Merci d'avance
var_dump( $values ); // avant le passage de l'explode
Résultat:
string( 37 ) "Bonjour;Bonsoir;Bonne nuit;Bon'ap"
Et le résultat avec un espace à la place de l'apostrophe:
string( 33 ) "Bonjour;Bonsoir;Bonne nuit;Bon ap"
Je n'ai toujours pas trouvé de solution donc je suis preneur au plus offrant ^^.
Merci d'avance
Bonjour,
À mon avis, dans ta base de donnée, ce n'est pas le caractère apostrophe « ' » qui est stocké, mais son code html : & #39;, qui fait bien 5 caractères, et se termine par un ;
Du coup, avant de faire ton explode, il faudrait que tu convertisses les caractères spéciaux :
explode( ";", htmlspecialchars_decode($values, ENT_QUOTES));
Xavier
À mon avis, dans ta base de donnée, ce n'est pas le caractère apostrophe « ' » qui est stocké, mais son code html : & #39;, qui fait bien 5 caractères, et se termine par un ;
Du coup, avant de faire ton explode, il faudrait que tu convertisses les caractères spéciaux :
explode( ";", htmlspecialchars_decode($values, ENT_QUOTES));
Xavier