Про html_entity_decode и DOMDocument::loadHTML

SMiX

Новичок
Про html_entity_decode и DOMDocument::loadHTML

Были проблемы с кодировкой при загрузке того же яндекса. Решил ее декодированием функцией html_entity_decode. Но получается так, что DOM сначала кодирует, а я потом декодирую. В мануалах не могу найти, как сказать DOM'у, чтобы он выводил "как есть"?
 

MiRacLe

просто Чудо
PHP:
    $doc = new DOMDocument('1.0','windows-1251'); // первый метод (иногда не срабатывает по невыясненным обстоятельствам)
$doc->loadHTML(file_get_contents('http://stat.yandex.ru/queries/last20.xml'));
    echo $doc->saveHTML();
PHP:
$dom = domdocument::loadHTML(file_get_contents('http://stat.yandex.ru/queries/last20.xml'));
$doc = $dom->saveHTML();
echo mb_convert_encoding($doc,'CP1251','auto'); // второй метод, некрасивый, но по опыту надёжный...
 

SMiX

Новичок
А теперь еще проблема:
PHP:
<?
//?><?

header('Content-Type: text/html; charset=UTF-8');


$doc = DOMImplementation::createDocument();
$doc->formatOutput = false;
@$doc->loadHTMLFile('http://yandex.ru/');
//$doc->encoding='utf-8';
//$a=$doc->saveHTML();
$all=$doc->getElementsByTagName('a');
echo '<pre><plaintext>';
foreach($all as $v){
//	$v->normalize();
	echo $v->getAttribute('href').' | '.mb_detect_encoding($v->nodeValue).' | '.$v->nodeValue."\n";//.*/mb_convert_encoding($v->nodeValue,'CP1251','UTF-8')."\n";//mb_convert_encoding('CP1251','auto',$v->nodeValue)."\n";
}

?>
</body>

</html>
Выводит такие крякозябры:
&#199;&#224;&#240;&#229;&#227;&#232;&#241;&#242;&#240;&#232;&#240;&#238;&#226;&#224;&#242;&#252;&#241;&#255;
Причем в html-коде так же. Без htmlentityes

-~{}~ 03.10.06 19:36:

Все. Проблему решил как здесь:
http://phpclub.ru/talk/showthread.php?s=&threadid=81287&highlight=dom+html
 
Сверху