2

我有一个 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 时,版权符号已经消失并被空格替换?!

我希望将版权符号替换为&copy;&#169。这不是选项mb_convert_encodingHTML-ENTITIES作用吗?

这是我正在使用的测试 HTML 文件。

4

2 回答 2

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');

注意:我直接回答你的问题,但你没有说你需要转换什么。可能有更好的方法来实现您的目标。

于 2012-05-01T10:55:51.610 回答
0

如果您将 html 作为 UTF-8 提供,那么正确的操作肯定是:什么都没有。

<p><span>Copyright © 2008 Your Company Name</span>

是完全有效的 html - 只需查看页面的页面源代码。

于 2012-05-01T10:53:05.277 回答