Странный символ ( ) появляется после выполнения html_entity_decode - PullRequest
3 голосов
/ 14 марта 2011

В отдельном файле YML у меня есть:
flags: [<img src="/images/cms_bo/icons/english.png" alt="English"/>]

Когда я вызываю это в мой код, это не интерпретируется, поэтому я использовал html_entity_decode.

Это работаетно у меня есть только 1 странный символ перед моим изображением :

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

Все мои файлы в кодировке UTF8.У вас есть идея, что я пропустил, чтобы решить эту проблему?

PS:

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

Ответы [ 3 ]

11 голосов
/ 14 марта 2011

Попробуйте использовать html_entity_decode($form['lang']->render(),ENT_QUOTES, "UTF-8");

1 голос
/ 14 марта 2011

До PHP 5.3.3 набор символов по умолчанию для html_entity_decode был ISO-8859-1 !Если вы работаете с UTF-8, вам нужно будет использовать третий аргумент функции, чтобы сообщить ей, что она имеет дело с UTF-8, вместо принятия ISO-8859-1.

Это слепо, если вы используете более старую версию PHP.

Если вы используете более новую версию PHP, рассмотрите возможность использования iconv с флагами //IGNORE//TRANSLIT, чтобы попытаться удалить все некорректные последовательности UTF-8 до передачи строки в html_entity_decode.

0 голосов
/ 14 марта 2011

Возможно, в вашем файле установлена ​​метка порядка байтов.

...