在一个单独的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());
}
答案 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)。