在 PHP DOMDocument 中禁用 html 实体编码
我不知道如何阻止 DOMDocument 破坏这些字符。
<?php
$doc = new DOMDocument();
$doc->substituteEntities = false;
$doc->loadHTML('<p>¯\(°_o)/¯</p>');
print_r($doc->saveHTML());
?>
预期输出: ˙(°_o)/˙
实际输出: (�°_o)/
I cannot figure out how to stop DOMDocument from mangling these characters.
<?php
$doc = new DOMDocument();
$doc->substituteEntities = false;
$doc->loadHTML('<p>¯\(°_o)/¯</p>');
print_r($doc->saveHTML());
?>
Expected Output:
¯(°_o)/¯
Actual Output:
¯(°_o)/¯
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我在 DOMDocument::loadHTML 文档:
只需添加
''
:I've found a hint in the comments of DOMDocument::loadHTML documentation:
Just add
'<?xml encoding="UTF-8">'
before the HTML-input:文档顶部负责 saveXML 和 saveHTML 的标签。
in the top of the document takes care of tags.. for both saveXML and saveHTML.
如果 HTML 以 UTF-8 正确加载并且具有元 charset=utf-8 标记,PHP DOMDocument 不会将字符转换为 htmlentities。
想法是:
meta charset=utf-8
标记到 DOMDocumentmeta charset=utf-8
标记。这是一个示例代码:
PHP DOMDocument will not convert characters to htmlentities if the HTML is properly loaded in UTF-8 and has the meta charset=utf-8 tag.
The idea is to:
meta charset=utf-8
tag to the DOMDocumentmeta charset=utf-8
tag from after saving the result.Here's a sample code: