我刚刚遇到用 UTF-8 编码的 HTML 文档在loadHTML()
.
Stack上有很多这样的QnA:
但是,据我了解,大多数答案都假设源编码是UTF-8。所以推荐这样使用mb_convert_encoding()
函数:
$dom->loadHTML(mb_convert_encoding($document_in_utf_8, 'HTML-ENTITIES', 'UTF-8'));
我想这只有在源文档是UTF-8 时才有效。不幸的是,在我的世界里,源文档可以有任何可用的编码:Windows-1251、UTF-8、KOI8-R 等等......
那么对于任何编码处理这个问题的最佳实践是什么?
更新1:只需找到mb_detect_encoding()
功能。使用一个来检测编码是一种好习惯吗?以这样的方式:
$encoding = mb_detect_encoding($doc);
$doc = mb_convert_encoding($doc, 'HTML-ENTITIES', $encoding);
$dom->loadHTML($doc);
在几个文件上对此进行了测试:看起来它有效,但我可以确定这适用于所有合理的情况吗?