Текст из тега <p> с использованием DOM Php

Эй, подумайте, что у меня есть синтаксис html follwing

<p>xyz</p> <p>abc</p> 

Я хочу получить текст (xyz и abc) с помощью DOM.

Это мой код.

 <?php $link='http://www.xyz.com'; $ret= getLinks($link); print_r ($ret); function getLinks($link) { /*** return array ***/ $ret = array(); /*** a new dom object ***/ $dom = new domDocument; /*** get the HTML (suppress errors) ***/ @$dom->loadHTML(file_get_contents($link)); /*** remove silly white space ***/ $dom->preserveWhiteSpace = false; /*** get the links from the HTML ***/ $text = $dom->getElementsByTagName('p'); /*** loop over the links ***/ foreach ($text as $tag) { $ret[] = $tag->innerHTML; } return $ret; } ?> 

Но я получаю пустой результат. Здесь я здесь.

Чтобы подавить ошибки синтаксического анализа, не используйте

 @$dom->loadHTML(file_get_contents($link)); 

но

 libxml_use_internal_errors(TRUE); 

Кроме того, нет причин для использования file_get_contents . DOM может загружаться из удаленных ресурсов.

 libxml_use_internal_errors(TRUE); $dom->loadHTMLFile($link); libxml_clear_errors(); 

Кроме того, имена тегов чувствительны к регистру. Вы запрашиваете <P> когда фрагмент содержит <p> . Изменить на

 $text = $dom->getElementsByTagName('p'); 

И, наконец, нет innerHTML . Пользовательское решение для его получения находится в

  • Как получить innerHTML DOMNode?

Вы можете получить outerHTML с помощью

 $ret[] = $dom->saveHtml($tag); // requires PHP 5.3.6+ 

или

 $ret[] = $dom->saveXml($tag); // that will make it XML compliant though 

Чтобы получить текстовое содержимое тега P, используйте

 $ret[] = $tag->nodeValue; 

Во-первых, дело имеет значение:

 $dom->getElementsByTagName('P'); 

Должно быть:

 $dom->getElementsByTagName('p'); 

Во-вторых, innerHTML не является допустимым свойством DOMElement.

Пытаться:

 echo $dom->textContent; echo $dom->nodeValue; 

Однако это не вернет внутренние HTML-теги и разделит их. Есть несколько примеров того, как заставить его работать в руководстве по PHP .