Problème d'encodage...

Résolu/Fermé
bpercheron Messages postés 9 Date d'inscription samedi 24 novembre 2007 Statut Membre Dernière intervention 4 avril 2008 - 27 nov. 2007 à 12:10
bpercheron Messages postés 9 Date d'inscription samedi 24 novembre 2007 Statut Membre Dernière intervention 4 avril 2008 - 27 nov. 2007 à 12:26
Bonjour!
J'ai un gros problème et j'espère que vous allez pouvoir m'aider car je vous avoue je ne sais plus comment faire...

J'ai créé un script PHP qui, après avoir fournie une adresse URL par formulaire, va chercher son titre directement dans ses sources et la stock en SQL. Jusqu'ici pas de problème, tout fonctionne bien.

Le soucis est que, comme je ne peux pas contrôler ces données, j'ai un soucis d'encodage.
1ère chose que je fais, encode en UTF8, pas de soucis (UTF8_encode();).

Le problème n'est pas cela. Le soucis vient du fait que certains sites écrivent leur titre avec des accents codés ("é" pour un accent aigu par exemple) et d'autres pas.
J'ai rajouté la fonction htmlentities(); pour convertir les accents non encodés au format HTML, mais le problème est que cela encode également les accents déjà codés: "é" devient "é".

Donc au final j'ai des résultats sans problèmes, avec les titres originaux qui n'ont pas d'accent déjà codés dans leur source:
ex: "France 2 : site de la chaîne de télévision - France 2"

et des résultats avec problèmes pour les titres ayant des accents déjà encodés au format HTML:
ex: " MagicDay : idées cadeaux entreprise, baptème hélicoptère avion - Magic Day"

Comment pourrais-je faire pour appliquer la fonction htmlentities(); sur uniquement les titres qui en on besoin, histoire d'éviter de rencoder les accents déjà codés! Existe-t-il une fonction similaire à mb_detect_encoding(); pour savoir si ma chaîne de caractère nécessite ou pas de passer par la fonction htmlentities();??

Merci bcp de m'aider, je suis désolé ce n'est pas un problème facile à expliquer mais bon, j'espère que vous comprendrez qqch. N'hésitez pas à demander plus de détails si vous le voulez...

Merci, be

2 réponses

bpercheron Messages postés 9 Date d'inscription samedi 24 novembre 2007 Statut Membre Dernière intervention 4 avril 2008 5
27 nov. 2007 à 12:26
Hum, je vois évidemment que mon texte comprenant des codes html du type & eacute; ont été converti en véritable accent qui rend mon explication incompréhensible sur le forum (bien joué le webmaster!! ;))

Bon c'est pas bien grave, le temps d'écrire mon message et j'ai trouvé la solution. Pour ceux qui veulent savoir, il suffit de décoder la chaine de caractères en utilisant la fonction html_entity_decode(); qui va transformer les accents déjà codés sur les titres en comprenant et ne rien faire sur les autres chaines de caractère n'en comprenant pas... puis de rencoder en utilisant la fonction htmlentities(); qui va mettre cette fois ci tous les accents de toutes les chaines en format HTML.

C'est p'têt un peu artisanal mais ça marche..!
Bonne journée, be
0
bpercheron Messages postés 9 Date d'inscription samedi 24 novembre 2007 Statut Membre Dernière intervention 4 avril 2008 5
27 nov. 2007 à 12:26
It's ok!
0