В PHP DomElement-> nodeValue есть суета - PullRequest
1 голос
/ 17 ноября 2010

Я анализирую стороннюю веб-страницу, используя элементы управления PHP DOMElement. Когда я использую веб-страницу в своем браузере и просматриваю исходный код, он чистый, но когда я получаю доступ к некоторым узлам через параметр DOMElement-> nodeValue, теги HTML отсутствуют, и есть несколько новых строк и этот символ. Согласно этому ответу , это символ, который появляется, когда возникает проблема с кодировкой.

Я также получаю эту чушь, используя:

  • simplexml_import_dom ($ узел) -> asXML ();
  • $ doc-> saveXML ($ узел);

У меня вопрос, как я могу просто получить чистый HTML-код внутри DOMElement?

Вот чистый HTML-код:

<b>Author:</b> AUTHOR<br>
            <b>ISBN:</b> 9780684857220 <br>
            <b>Edition/Copyright:</b> 7<br>
            <b>Publisher:</b> J+M<br>
            <b>Published Date:</b>  1989<br>

Вот что дает nodeValue:

                    Â 
                    Author:Â AUTHOR      ISBN:Â 9780684857220 Edition/Copyright:Â 7     Publisher:Â J+M       Published Date:Â 
                    1989

Ответы [ 2 ]

2 голосов
/ 17 ноября 2010

Оказывается, это была не проблема кодирования, а скорее я использовал неправильные методыЭто работает:

$doc = new DOMDocument();
$doc->appendChild($doc->importNode($second_td,true)); 
echo $doc->saveHTML();
2 голосов
/ 17 ноября 2010

Вы пытались указать кодировку при создании документа DOM? Например:

$doc = new DOMDocument('1.0', 'utf-8');
$doc->loadXML($third_party_web_page_string);

или

$doc = new DOMDocument('1.0', 'iso-8859-1');
$doc->loadXML($third_party_web_page_string);

Если ни один из этих способов не работает, вы можете попробовать использовать функцию iconv для данных перед загрузкой их в объект DOM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...