Интересно почитать… Блог в котором есть много интересной информации…

5 января 2012

Изучаем PHP DOMDocument

Категория: программирование — dmitriano @ 23:40

DOMDocument вполне юзабильная вещь, но, как всегда, нужно учитывать кое-какие особенности связанные с кодировкой, например если просто загрузить кусок HTML а потом его сохранить, то получится вот такая штука:

html-parser1

чтобы задать кодировку для куска HTML, надо сделать так:

$html = 'some html';

$doc = new DOMDocument();

$doc->loadHtml('<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/></head><body>' . $html . '</body></html>');

//do somethig with $doc at this point

$xpath = new DOMXPath($doc);

$body = $xpath->query('/html/body');

$saved_html = $doc->saveXml($body->item(0));

в данном случае, от тэгов <html> и <head> мы избавляемся, но остается тэг <body>.  Чтобы избавиться от <body> надо сделать немного хитрее:

$html = "";

foreach ($body->item(0)->childNodes as $node)
{
    $html = $html . $doc->saveXML($node);
} 

$saved_html = $html;

Кроме кодировки PHP DOMDocument имеет ещё одну особенность – после сохранения документа в нем появляются символы “&#13;”:

html-parser2

это происходит потому, что PHP DOMDocument не любит HTML в Windows-кодировке, поэтому перед загрузкой надо конвертировать HTML в UNIX-кодировку:

$unix_html = preg_replace("/\r\n/", "\n", $html, -1, $rep_count);

$doc = DOMUtil::LoadHtml($unix_html);

а ещё лучше сделать так:

$unix_html = str_replace("\r", "", $html);
Линии 3D/Шарики 3D

Комментариев нет »

No comments yet.

RSS feed for comments on this post. TrackBack URL

Leave a comment

SlogPost.ru