我有一个HTML文件,当我在记事本中查看时,我可以看到以下内容:
<p><span>Copyright © 2008 Your Company Name</span>
请注意版权符号:
我加载HTML并在其上执行:
$html = file_get_contents('test.html');
$html = mb_convert_encoding($html, 'HTML-ENTITIES', "UTF-8");
file_put_contents('output.html', $html);
当我在记事本中再次查看html时,版权符号已消失并被空格取代?!
我希望版权符号替换为©
或©
。这不是具有mb_convert_encoding
选项的HTML-ENTITIES
吗?
这是我正在使用的test HTML file。
答案 0 :(得分:8)
您的测试HTML页面是不以UTF-8编码;因此,当mb_convert_encoding
看到版权字符(序数值169)时,它不知道如何处理它认为是无效的UTF-8序列。
因此,在调用mb_convert_encoding
时,您应该指定正确的输入编码:
$html = mb_convert_encoding($html, 'HTML-ENTITIES', 'ISO-8859-1');
或者,您可以使用类似
的内容$html = htmlentities($html, ENT_COMPAT | ENT_HTML401, 'ISO-8859-1');
注意:我正在直接回答您的问题,但您没有说明您需要转换的内容。可能有更好的方法来实现您的目标。
答案 1 :(得分:0)
如果你将你的html作为UTF-8服务,那么肯定是正确的行动:没有。
<p><span>Copyright © 2008 Your Company Name</span>
完全有效的HTML - 只需查看此页面的页面来源。