我正在尝试从HTML字符串中读取h1值,如下所示
<h1>
<a href="http://example.com/?p=5016"> love me for a reason </a>
</h1>
我正在使用以下代码,但这会返回标题的空值,但内容似乎正常(下一行)?为什么
libxml_use_internal_errors(true);
$dom_document = new DOMDocument(); // CREATE A NEW DOCUMENT
$dom_document->loadHTML(mb_convert_encoding($row['html'], 'HTML-ENTITIES', 'UTF-8')); // LOAD THE STRING INTO THE DOCUMENT
$article_titles=$dom_document->getElementsByTagName("h1");
$title = $article_titles->textContent;
//this works fine
$article_contents=$dom_document->getElementByID("article-single");
$content=$article_contents->textContent;
libxml_use_internal_errors(false);
答案 0 :(得分:2)
标题内容为空,因为$article_titles
仍为DOMNodeList
。由于您通过标记名称获取元素,因此您希望这将返回一个或多个元素,而不是通过 id 获取元素,您只需要一个因为它们是应该是独一无二的。
您必须定位DOMElement
才能获得->textContent
值。您可以通过链接->item(index_num)
:
$article_titles = $dom_document->getElementsByTagName("h1"); // DOMNodeList
$title = $article_titles->item(0)->textContent;
// ^ point to the first item found, it starts at zero
echo $title;
如果您想使用foreach
:
foreach($dom_document->getElementsByTagName("h1") as $title) {
echo $title->textContent . '<br/>';
}