将非UTF-8文本转换为可显示的HTML - 这些亚洲字符是什么?

时间:2018-04-05 15:37:33

标签: php html regex encoding utf-8

我们需要能够从具有UNKNOWN字符编码的HTML文件中获取内容,修改内容,然后在用户的浏览器中显示它。我创建的任何测试文件都可以正常工作,但我们从客户那里获得的一些文件却没有。这些文件不会被修改,因为代码使用正则表达式搜索内容,并且它们将在浏览器中显示奇怪的字符,通常是我在页面底部无法识别的混乱的亚洲字符。

我已经尝试过utf8_encode,htmlspecialchars,iconv,甚至是我希望可以处理这个问题的第三方API。到目前为止,没有任何工作。

如果我在Sublime中打开其中一个问题HTML文件,一切看起来都很完美。如果我使用vim查看它,我会在之前看到<feff><feff>。如果我尝试使用上述PHP函数中的一个来更正此文件,我会在文件的开头处获得6个无法识别的字符,其中包含这些2,并且在每个小于号之前有1个无法识别的字符。 (大多数人不受影响。)

如果我将其中一个文件的内容从Sublime直接复制/粘贴到我的代码中,那么正则表达式工作正常并且HTML显示完美。

如果我简化我的正则表达式以忽略少于符号(其中一些搜索HTML标记),他们仍然不会检测到任何匹配,即使应该匹配的部分不包含无法识别的字符。

我知道的很多,但现在已经让我的头旋转了几天。任何见解都可能是英雄的。

1 个答案:

答案 0 :(得分:0)

我们解决这个问题的最佳方法是使用DOMDocument的loadHTMLFile()方法。