我想要从其中删除一个div的另一个域的页面包含:
<div id="thisone">
<p>Stuff</p>
</div>
<div id="notthisone">
<p>More stuff</p>
</div>
使用这个php ...
<?php
$page = file_get_contents('http://thisite.org/source.html');
$doc = new DOMDocument();
$doc->loadHTML($page);
foreach ($doc->getElementsByTagName('div') as $node) {
echo $doc->saveHtml($node), PHP_EOL;
}
?>
...用html给我http://thisite.org/source.html上的所有div。但是,我只想通过id为“thisone”的div来使用:
foreach ($doc->getElementById('thisone') as $node) {
没有提出任何建议。
答案 0 :(得分:4)
$doc->getElementById('thisone');// returns a single element with id this one
尝试$node=$doc->getElementById('thisone');
,然后打印$node
另外,您可以将phpQuery用于类似syntext的jquery:pq("#thisone")
答案 1 :(得分:0)
$doc->getElementById('thisone')
返回单个DOMElement,而不是数组,因此您无法遍历它
只是这样做:
$node = $doc->getElementById('thisone');
echo $doc->saveHtml($node), PHP_EOL;
答案 2 :(得分:0)
查看PHP手册http://php.net/manual/en/domdocument.getelementbyid.php getElementByID返回一个元素或NULL。不是数组,因此你不能迭代它。
而是这样做
<?php
$page = file_get_contents('example.html');
$doc = new DOMDocument();
$doc->loadHTML($page);
$node = $doc->getElementById('thisone');
echo $doc->saveHtml($node), PHP_EOL;
?>
跑步
php edit.php
你得到类似的东西
<div id="thisone">
<p>Stuff</p>
</div>