我有一个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时,版权符号已经消失,并被一个空格所取代?!
我想用©或©替换版权符号。这不就是带有HTML-ENTITIES选项的mb_convert_encoding所做的事情吗?
这是我正在使用的test HTML file。
发布于 2012-05-01 18:55:52
您的测试HTML页面是用编码的,而不是用UTF8编码的;因此,当mb_convert_encoding看到版权字符(序数值169)时,它不知道如何处理它认为是无效的UTF8序列。
因此,在调用mb_convert_encoding时应指定正确的输入编码
$html = mb_convert_encoding($html, 'HTML-ENTITIES', 'ISO-8859-1');或者,您可以使用类似于
$html = htmlentities($html, ENT_COMPAT | ENT_HTML401, 'ISO-8859-1');注意:我直接回答了你的问题,但你没有说你需要转换做什么。有可能有更好的方法来实现你的目标。
发布于 2012-05-01 18:53:05
如果您以UTF-8格式提供html,正确的操作肯定是:什么都不做。
<p><span>Copyright © 2008 Your Company Name</span>是完全有效的html -只需查看此页面的页面源代码。
https://stackoverflow.com/questions/10396602
复制相似问题