Problème avec explode et les apostrophes

Résolu/Fermé
steller91 Messages postés 28 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 29 mars 2012 - Modifié par steller91 le 1/04/2011 à 01:29
steller91 Messages postés 28 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 29 mars 2012 - 5 avril 2011 à 21:13
Bonjour à tous,

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

steller91 Messages postés 28 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 29 mars 2012 5
Modifié par steller91 le 1/04/2011 à 08:44
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é).
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
0
steller91 Messages postés 28 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 29 mars 2012 5
1 avril 2011 à 09:18
Problème résolu, mon problème venais de l'encodage du document qui n'était pas en UTF-8.
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
1 avril 2011 à 09:20
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
0
steller91 Messages postés 28 Date d'inscription jeudi 15 avril 2010 Statut Membre Dernière intervention 29 mars 2012 5
5 avril 2011 à 21:13
Je te remercie, en faite mon problème venait de l'encodage de mon document qui par défaut c'était mit en ANSI or c'était en UTF-8 qu'il fallait qu'il soit.
0