这里有一个代码:
<?php
$html = <<< HTML
<div id="one">
<h1>header 1</h1>
<h2>header 2</h2>
<blockquote>
<p>paragraph1</p>
<p>paragraph2</p>
</blockquote>
<b>bold text1</b>
<b>bold text2</b>
</div>
HTML;
$dom = new DOMDocument();
@$dom->loadHTML($html);
/******************3rd part*************/
echo $dom->childNodes->item(0)->nodeName."<br>";
echo $dom->childNodes->item(1)->nodeName."<br>";
/**********1st part**********/
$tags = $dom->getElementsByTagName("blockquote");
foreach($tags as $tag)
{
$ps=$tag->getElementsByTagName("p");
foreach($ps as $p)
{
echo $p->nodeValue."<br>";
}
}
/************2nd part**********/
$tags = $dom->getElementById("one");
foreach($tags as $tag)
{
$hs=$tag->getElementsByTagName("h1");
foreach($hs as $h)
{
echo $h->nodeValue."<br>";
}
}
?>
请以身作则:
- $html中的firstNode和lastNode是什么?我如何打印这些节点中的文本?
- 为什么代码的第二部分什么也不打印?
-
<h2>header 2</h2>
是单节点吗? - textcontext和nodeValue的区别是什么?
- textContent, item()和子节点的概念是什么?
- div# 1包含多少个子节点?
- $dom的子节点有哪些?我怎么打印他们的名字?
- 这段代码第三部分的错误是什么?两行显示的是相同的!
我从这里读了@Gordon的回答,但我需要一些明确的例子。
- 都是
<div id="one">
注意所有的h1, h2和blockquote节点都是这个节点的子节点。 -
$dom->getElementById(0);
将返回第一个元素。$dom->getElementById(1);
将返回第二个(如果它存在)id
是这个标签中属性的名称<div id="one">
不明白这个问题。单节点是什么意思? - textContent: childNodes中的所有文本(http://www.w3schools.com/dom/prop_element_textcontent.asp);nodeValue:节点的值,取决于它的类型http://www.w3schools.com/dom/prop_document_nodevalue.asp
- 继续读…这个http://www.w3schools.com/htmldom/default.asp