我需要从网页中抓取一些数据。但我有一些编码问题。
这里只是一个小示例代码,用于在一个著名的德国网页上显示该问题。
我希望从网页上得到这个文本:
Alle Kritiker werden gespannt nach Wolfsburg schauen,denn der VfL wurde kräftig umgekrempelt。Können die Kölner daraus ihren Nutzen ziehen?
但正如你在我的测试中看到的那样,我得到了这个:
Alle Kritiker werden gespannt nach Wolfsburg schauen,denn der VfL wurde kräftig umgekrempelt。Können die Kölner daraus ihren Nutzen ziehen?
页面的元标记说,它是 UTF-8 编码的……
而且 mb_detect_encoding 也说,它是 UTF-8。
但是为什么我会得到这个蹩脚的文字呢?
当我将文本转换为 ISO-8859-1 时,我得到了预期的结果......
<?php
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">';
$url = "http://www.goal.com/de/match/60952/wolfsburg-vs-1-fc-k%C3%B6ln/preview";
$fileContent = @file_get_contents($url);
$dom = @DOMDocument::loadHTML($fileContent);
$xpath = new DOMXpath($dom);
$element = $xpath->query(".//*[@id='article_headline']/h2");
if ($element->length > 0) {
$item = $element->item(0);
$text = $item->textContent;
echo $text . "<br>";
$text = iconv("UTF-8", 'ISO-8859-1', $text);
echo $text . "<br>";
}
?>