嘿,
考虑我有以下的html语法
考虑我有以下的html语法
<p>xyz</p> <p>abc</p>
我想使用DOM检索文本(xyz和abc).
这是我的代码.
<?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');
> How to get innerHTML of DOMNode?
您可以使用获取outerHTML
$ret[] = $dom->saveHtml($tag); // requires PHP 5.3.6+
要么
$ret[] = $dom->saveXml($tag); // that will make it XML compliant though
$ret[] = $tag->nodeValue;