执行html_entity_decode后出现奇怪的字符( )

时间:2011-03-14 16:09:21

标签: php html-encode

在一个单独的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 个答案:

答案 0 :(得分:11)

尝试使用html_entity_decode($form['lang']->render(),ENT_QUOTES, "UTF-8");

答案 1 :(得分:1)

在PHP 5.3.3之前,html_entity_decode默认字符集 ISO-8859-1 !如果您正在使用UTF-8,则需要使用函数的第三个参数来告诉它处理UTF-8而不是假设ISO-8859-1。

这是盲目地假设您使用的是旧版本的PHP。

如果 使用较新版本的PHP,请考虑使用带有//IGNORE//TRANSLIT标记的iconv来尝试删除之前的任何错误的UTF-8序列 / em>将字符串传递给html_entity_decode

答案 2 :(得分:0)

也许您的文件设置了字节订单标记(BOM)。