嘿, 考虑我有以下 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');
最后,没有 innerHTML
.获取它的用户空间解决方案在
您可以获取 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;
关于php - 来自 <p> 标签的文本使用 DOM Php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4971373/