При разборе html-документа, используя DOMDocument, я получаю другую кодировку от nodeValue. В моей среде разработки я получаю UTF-8, однако при загрузке скрипта на веб-сервер я получаю ISO-8859-1.
Может кто-нибудь объяснить это поведение и как получить ту же кодировку?
<?php
header('Content-Type:text/html; charset=UTF-8');
$strHtml = file_get_contents("http://www.aftonbladet.se/senastenytt/ttnyheter/inrikes/article13397806.ab");
$objDOM= new DOMDocument();
@$objDOM->loadHTML($strHtml);
echo "Encoding: ". $objDOM->encoding."<br/>";
//Parse heading from DOMDocument
$objNodelist = $objDOM->getElementsByTagname('h1');
foreach ($objNodelist as $objElem)
{
$strNodeValue = $objElem->nodeValue; //get the
break;
}
echo 'nodeValue: "'.$strNodeValue.'"<br/>';
echo 'utf8_decode: "'.utf8_decode($strNodeValue).'"<br/>';
echo 'utf8_encode: "'.utf8_encode($strNodeValue).'"<br/>';
//Parse heading using substring from html
$strHeading = substr($strHtml , strpos($strHtml, '<h1 class="abS32">')+18, strpos($strHtml, '</h1>') - strpos($strHtml, '<h1 class="abS32">')-18);
echo 'Heading from substring: "'.$strHeading.'"';
?>
Вывод при запуске в среде разработки
Кодировка: utf-8
nodeValue: "När semestern inleds vankas åska"
utf8_decode: "N r semestern inleds vankas ska"
utf8_encode: "Når semestern inleds vankas à ¥ ska"
Заголовок из подстроки: "När semestern inleds vankas åska"
Вывод при запуске на общедоступном веб-сервере
Кодировка: utf-8
nodeValue: "Når semestern inleds vankas à ¥ ska"
utf8_decode: "När semestern inleds vankas åska"
utf8_encode: "Når semestern inleds vankas à ¥ ska"
Заголовок из подстроки: "När semestern inleds vankas åska"
Очевидно, что utf8_decode нужно использовать на общедоступном веб-сервере, но не в моей среде разработки. Я хотел бы иметь одинаковое поведение в обеих системах. Есть идеи?