我正在尝试转换所有& nbsp;实例到PHP中的常规空格:
echo '<meta charset="UTF-8" /> ';
echo html_entity_decode(' ');
echo html_entity_decode(' ', ENT_COMPAT, 'UTF-8');
如果第一行被注释掉,那么输出将在ISO 8859-1中并读作:
Â
前面有空间的地方。如果指定了UTF-8编码,则显示为:
�
这是一个未定义的UTF-8字符,后跟一个空格。无论如何,确保所有HTML实体空间都被正确解码而不管编码?
空格字符实际上只是一个例子,我想要做的是从未指定的字符集中读取html输入并显示它。所以&lt;和&amp;#60;会变成&lt;。
答案 0 :(得分:3)
不是空格。它是ISO 8859-1中的字节160,而在UTF-8中是\xc2\xa0
。正如名称no breakable space
暗示浏览器不会替换换行符。
如果你想要一个空间,你将不得不用空格替换它。
答案 1 :(得分:1)
这是编码问题。它们不兼容。您必须在html_entity_decode
中为每个编码使用不同的选项。但是,您可以先将输入转换为utf-8(iconv),然后再使用html_entity_decode($string, ENT_COMPAT, 'UTF-8')
。
如果你不知道输入的编码,你必须猜测。
答案 2 :(得分:0)
为什么不先发送标题?
header("Content-type: text/html; charset=utf-8");
echo html_entity_decode(" ", ENT_COMPAT, 'UTF-8');