2011-03-14 3 views
2

Dans un fichier séparé YML j'ai:
flags: [<img src="/images/cms_bo/icons/english.png" alt="English"/>]étrange char() apparaît après avoir fait html_entity_decode

Quand j'appelle cela dans mon code, ce n'est pas interprété, donc je l'ai utilisé html_entity_decode.

Il fonctionne mais je n'ai 1 caractère étrange juste avant mon image:

<?php echo html_entity_decode($form['lang']->render()); ?> 

Tous mes fichiers sont codés UTF8. Avez-vous une idée de ce que j'ai manqué pour résoudre ce problème?

PS:

 public static function getI18nCulturesForChoice() 
    { 
     return array_combine(self::getI18nCultures(), self::getI18nCulturesFlags()); 
    } 
+2

Afficher un code plus pertinent aidera –

+0

La question est très claire. Pourquoi utilisez-vous 'html_entity_decode' en premier lieu? Il n'y a pas d'entités dans votre description. – Jon

+0

@jon @shakti car sinon mon code n'est pas interprété. Il n'affiche pas l'image mais juste le English (juste la chaîne) –

Répondre

10

Essayez d'utiliser html_entity_decode($form['lang']->render(),ENT_QUOTES, "UTF-8");

+1

Merci, c'est finalement réglé ;-) –

0

Peut-être que votre fichier a un Byte Order Mark set (BOM).

+0

Je ne le pense pas car sans html_entity_decode, il sort la chaîne telle qu'elle est réellement. Sans char bizarre –

+0

et j'utilise textmate: (Par défaut dans Textmate pour Mac, il crée des fichiers UTF-8 sans aucun marqueur de nomenclature.) –

1

Avant PHP 5.3.3, le caractère par défaut défini pour html_entity_decode était ISO-8859-1! Si vous travaillez avec UTF-8, vous devrez utiliser le troisième argument de la fonction pour lui indiquer de traiter avec UTF-8 au lieu de supposer ISO-8859-1.

Cela suppose aveuglément que vous utilisez une ancienne version de PHP.

Si vous sont en utilisant une version plus récente de PHP, pensez à utiliser iconv avec les drapeaux //IGNORE//TRANSLIT pour essayer de supprimer toute mauvaise UTF-8 séquences avant passer la chaîne en html_entity_decode.

+0

@Charles Deuil, c'est une bonne avance, mais j'utilise PHP 5.3.3: '( –

+0

J'ai furtivement édité mon post pour faire face à cette possibilité.) est le glyphe "Je ne peux pas représenter ce personnage", alors il est clair que quelque chose est perdu quelque part ... – Charles

+0

Toujours pas:' (, ( render());?>) –

Questions connexes