我正在从大约100个不同的域解析HTML。我可以检查每个域使用的编码和&做那样的事,但这看起来很蠢。
通常编码是在标题标签中是吗?但并不总是我聚集在一起。所以我可能需要运行一些正则表达式?或者使用一些mb_函数。或者也许使用cURL?到目前为止,我发现的所有例子都是针对XML&现在我头疼了。
是的我也在使用DOMDocument类来查找我想要的内容。这一切都很有效。除了编码。
答案 0 :(得分:0)
您可以解析任何负责任的程序员应该包含在<head>
元素中的元标记。
<meta http-equiv="content-type"
content="text/html;charset=utf-8" />
您也可以选择拒绝标题或元标记中没有字符集的任何html。
答案 1 :(得分:0)
根据W3C internationalization standards,您应该遵循这些优先级,以获得HTML / XML文档的编码:
Content-Type
标头(来自HTTP响应)<?xml version="1.0" encoding="utf-8" ?>
meta
标记http-equiv="Content-Type"
(来自HTML标题)根据我的经验,当所有失败时,您可以假设编码很可能是ISO-8859-1或CP1252。您可以使用iconv库解码内容,例如:iconv("UTF-8", "ISO-8859-1", $content)
。
如果您使用cURL库来获取网址,则可以使用以下网址获取内容类型标头:curl_getinfo($ch, CURLINFO_CONTENT_TYPE)
。可以使用XML / HTML解析器提取其他标记。