[英]Text from <p> tag using DOM Php
嘿,考虑我有以下的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>
<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;
首先,案件事项:
$dom->getElementsByTagName('P');
应该:
$dom->getElementsByTagName('p');
其次, innerHTML
不是有效的DOMElement属性。
尝试:
echo $dom->textContent;
echo $dom->nodeValue;
但是,这不会返回内部HTML标记并将删除它们。 有一些关于如何在PHP手册中使用它的示例 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.