Мне нужно почистить некоторые данные с веб-страниц.Но у меня есть некоторые проблемы с кодированием.
Вот лишь небольшой пример кода, показывающий проблему на хорошо известной немецкой веб-странице.
Я ожидал получить этот текст с веб-страницы:
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>";
}
?>