8791 sujets

Développement web côté serveur, CMS

Modérateur
Bonjour,

J'ai pu constater que la fonction html_entity_decode() ne fonctionne pas pour certaines entités. C'est normal ?
Existe-t-il une fonction toute faite pour convertir les entités non éligibles ( j'ai pu repérer & rsquo; et & bull; qui n'étaient pas converties) ?
J'ai essayé en modifiant l'encodage (utf-8, iso, ...), rien n'y fait.

Merci d'avance.
Modifié par jojaba (24 Apr 2012 - 07:38)
Tu peux voir la liste des caractères remplacés par la fonction htmlentities() (et son contraire) en faisant appel à la méthode get_html_translation_table().

Pour ton problème, de ce que j'ai compris cela vient du fait que les caractères bull et rsquo que tu cites existents dans la table CP-1252 qui est très similaire à ISO-8859-1 mais avec plus de caractères.

a écrit :
The fact that MS-word and some other sources use CP-1252, and that it is so close to Latin1 ('ISO-8859-1') causes a lot of confusion. What confused me the most was finding that mySQL uses CP-1252 by default.


Voici dont la solution :

$string = "• ‘Hello world’";

// liste des caractères convertis
echo '<pre>';
print_r( get_html_translation_table(HTML_ENTITIES, ENT_QUOTES, 'WINDOWS-1252') );
echo '</pre>';

// conversion
$string = html_entity_decode($string, ENT_QUOTES, 'WINDOWS-1252');

// tu veux probablement que ta chaine finale soit en UTF-8
$string = mb_convert_encoding($string, 'UTF-8', 'WINDOWS-1252');

echo $string; // affiche : • ‘Hello world’
Modérateur
Merci, je viens d'apprendre quelque chose ! Smiley smile
Ça fonctionne en encodage windows effectivemment.
Et non, il me fallait ça en iso-8859-1 à aprtir d'un contenu en utf-8. Voici ce que donne ma ligne de conversion :

$content = html_entity_decode(utf8_decode($content), ENT_QUOTES, 'WINDOWS-1252');


Merci encore Smiley cligne