Problème d'affichage d'apostrophes

BenjaminN -  
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   -
Salut à tous,
Je cherche à afficher un texte qui contient des apostrophes particulières : " ’ ".
Elles viennent sans doute de Word (il a plusieurs types d'apostrophes), qui transforme tout "L'enfant" en "L’enfant" par exemple. Après, avec un copier/coller basique, ça se retrouve dans ma base de données, et puis j'arrive plus à les afficher.

Du coup, sous Firefox, ça m'affiche un carré avec marqué 0092 : 00 sur la première ligne, et 92 sur la deuxième. Visiblement Firefox ne s'en sort pas.

Le champ de ma table qui contient le texte est en ISO (je peux pas le changer hélas), donc je fais un utf8_encode après pour afficher le résultat.

Je me suis dit qu'avec un str_replace basique, je pourrais m'en sortir, mais visiblement ça fonctionne pas mieux. Voici mon code:

$texte= str_replace("’", "'", utf8_encode($article['texte']));


Ne remplace rien du tout.

Alors je me tourne vers vous : avez-vous une idée?

Merci les amis

4 réponses

rescue Messages postés 1047 Statut Contributeur 136
 
Bonjour,

Alors va voir du coté du stripslashes et addslashes
Si ton magic_quote_gpc est désactivé dans le php.ini c'est ce qui se passe.

Et pour des raisons de sécurité il vaut mieux qu'il soit désactivé et surtout que dans php6 cette directive n'existera plus.

@+
0
BenjaminN
 
J'ai fait :
$texte= stripslashes(utf8_encode($article['texte']));

et
$texte= addslashes(utf8_encode($article['texte']));

aucun des deux ne changent.
De plus mon option magic_quotes_gpc est activée : c'est vraiment bizarre de vouloir l'enlever, c'était vachement utile ! Je me souviens de l'époque où on devait vérifier que tous les apostrophes étaient bien backslashé !
0
rescue Messages postés 1047 Statut Contributeur 136
 
Bonjour,

Là je sèche...
Dans votre base de données avez vous bien le texte écrit entièrement ?
Si oui alors je ne vois pas ou est le problème ça doit s'afficher.

Néanmoins si vous voulez coder propre et pour le futur passer la directive magic_quote_gpc à OFF.
La sécurité supplémentaire c'est d'éviter aussi les injections sql dans vos scripts php.

Cordialement
0
BenjaminN
 
La directive magic_quote_gpc sert justement à ça non? Elle échappe toutes les apostrophes, de façon à ce qu'on évite les injections SQL.

Mais à priori ici mon apostrophe n'est pas backslashé car elle ne présente pas de risque : ce n'est pas la même que celle de ma requête SQL !

Dans la base de données, elle apparaît bien, donc je pense que c'est au moment d'encoder d'ISO en UTF8!
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
salut,

et si tu virais tous les mauvais apostrophes de ta BDD ?

tu fais un export en SQL, tu ouvres le SQL dans un éditeur de texte, rechercher/remplacer, tu remplaces tout et tu exécutes le nouveau SQL dans ta BDD.

par contre t'as intérêt à faire au moins deux sauvegardes !
0
BenjaminN
 
Ahah c'est pas aussi simple que ça en fait, parce que je n'ai accès qu'en lecture sur cette table ! Je travaille sur un site, découpé en deux parties, dont je ne m'occupe que de l'affichage, l'ajout de données étant géré par un CMS : si j'avais accès à ça, ce serait simple de remplacer juste avant que les données soient entrées dans la table toutes les apostrophes particulières en apostrophes normales !
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923 > BenjaminN
 
et ce CMS, as-tu fais des recherches pour savoir si quelqu'un d'autre à le même soucis avec ?

j'ai le même problème quand je fais des copier/coller depuis des textes tapés sous Mac OS, mais je n'arrive pas à le transposer à ton cas…

faut dire que tu fais pas dans la simplicité !
-:oD
0