2016-11-19 142 views
0

我有以下几点:PHP:获取DOM元素通过类名

<div id="content"> 
<div class="content-top">bla</div> 
<div class="inner text-inner"> 
bla bla bla 
</div> 
</div> 

和PHP:

$page = file_get_contents('http://www.example.com/test'); 
@$doc = new DOMDocument(); 
@$doc->loadHTML($page); 
$node = $doc->getElementById('content'); 

如何修改$node = $doc->getElementById('content');这样我就可以瞄准<div class="inner text-inner">

回答

2

您可以使用XPath轻松实现它。

$page = file_get_contents('http://www.example.com/test'); 
@$doc = new DOMDocument(); 
@$doc->loadHTML($page); 

$xpath = new DomXPath($doc); 

$nodeList = $xpath->query("//div[@class='inner text-inner']"); 
$node = $nodeList->item(0); 

// To check the result: 
echo "<p>" . $node->nodeValue . "</p>"; 

这将输出:

bla bla bla 
+0

当我尝试在一个文件中保存//记录条目 $记录= $ _ SERVER [ 'DOCUMENT_ROOT']。 '/ myfolder /'。 '测试'。 '的.html'; $ file = fopen($ record,“w”); $ txt = $ doc-> saveHtml($ nodeList); fwrite($ file,$ txt); fclose($ file); 它获取警告:DOMDocument :: saveHTML()期望参数1是DOMNode,在..中给出的对象,并且没有任何内容保存在test.html文件中 –

+0

@ Gorna-Bania,这是因为'$ nodeList'是一个DOMNodeList对象。尝试改变:'$ txt = $ doc-> saveHtml($ nodeList-> item(0));' – nanocv