我尝试从其他网站学习数据报废,所以我开始尝试创建一个小的HTML文件。
domhtml.php:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<body>
<div id="mango">
This is the mango div. It has some text and a form too.
<form>
<input type="text" name="first_name" value="Yahoo" />
<input type="text" name="last_name" value="Bingo" />
</form>
<table class="inner">
<tr><td>Happy</td><td>Sky</td></tr>
</table>
</div>
<table id="data" class="outer">
<tr><td>Happy1</td><td>Sky</td></tr>
<tr><td>Happy2</td><td>Sky</td></tr>
<tr><td>Happy3</td><td>Sky</td></tr>
<tr><td>Happy4</td><td>Sky</td></tr>
<tr><td>Happy5</td><td>Sky</td></tr>
</table>
</body>
</html>
extract.php:
<?php
$ch = curl_init("http://192.168.0.198/projects/domhtml.php");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$cl = curl_exec($ch);
$dom = new DOMDocument();
$dom->loadHTML($cl);
$dom->validate();
$title = $dom->getElementById("mango");
//var_dump($title);exit;
//$title = $dom->saveXML($title);
echo '<pre>';
print_r($title);
?>
但它返回输出:
DOMElement Object
(
)
为什么它是空的?除此之外该怎么办?我也尝试了PHP Dom not retrieving element解决方案,但它返回相同的内容。
修改:
好的,就像你们所有人都告诉我的那样:
$ch = curl_init("http://192.168.0.198/shopclues/domhtml.php");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
$cl = curl_exec($ch);
$dom = new DOMDocument();
$dom->loadHTML($cl);
$dom->validate();
$title = $dom->getElementById("data");
//var_dump($title);exit;
$title = $dom->saveXML($title);
echo '<pre>';
print_r($title);
现在正在打印:
Happy1 Sky
Happy2 Sky
Happy3 Sky
Happy4 Sky
Happy5 Sky
我想知道有多少tr标签,以便我可以将每个tr的值存储在某个变量中。我的意思是如何循环将值存储到变量中?
提前致谢。
答案 0 :(得分:0)
DOM类中的默认“__toString()”函数一直在稳步改进:
http://codepad.viper-7.com/hw9UKg
使用不同版本的PHP运行上面代码段中的代码,您将看到5.3.3和5.4.33之间的区别。
对于问题的第二部分,有很多方法可以做你想要的。我会告诉你一个:
$dom = new DOMDocument();
// I used a different URL
$dom->loadHtmlFile("http://192.168.0.198/shopclues/domhtml.php");
$list = $dom->getElementById("data")->childNodes;
print_r($list->length); // outputs 5 for me.
$list
是DOMNodeList
,它实现了Traversable
,因此您可以循环它以获取值。有关更多信息,请查看:
http://php.net/manual/en/class.domnodelist.php
对于更复杂的查询,您可能需要查看DOMXPath
:
http://php.net/manual/en/class.domxpath.php
使用DomDocument
和DomNode
阅读您可以使用的所有功能也是有益的: