我尝试获取此网址的内容:http://www.chromeball.com,但字符编码效果不佳。
我有这段代码:
$url = 'http://www.chromeball.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
curl_close($ch);
$dom = new DOMDocument();
$dom->loadHTML($data);
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//text() | //@alt | //@title | /html/head/meta[@name="description"] | /html/head/meta[@name="keywords"]');
foreach($nodes as $node) {
$textNodeContent .= " ".$node->nodeValue;
}
$enc = mb_detect_encoding($textNodeContent,'iso-8859-2,iso-8859-1,utf-8');
print iconv($enc,'utf-8//TRANSLIT',$textNodeContent);
但这不起作用。字符编码错误。如何将$ textNodeContent转换为utf-8?谢谢。
答案 0 :(得分:0)
从mb_detect_encoding页面上的评论看,该功能看起来并不特别可靠。 Chrigu(见帖子日期为2005年3月29日03:32),建议将UTF-8
作为列表中的第一个字符编码:
$enc = mb_detect_encoding($textNodeContent,'utf-8,iso-8859-2,iso-8859-1');
我已经尝试过了,它现在将内容显示为UTF-8。但是,我刚刚尝试了ISO-8859-1内容,它也检测到了UTF-8 ......
答案 1 :(得分:0)
像这样初始化DOM:
$dom->loadHTML('<?xml encoding="UTF-8">' . $data);