2012-07-28 49 views
0

我有节点,并在循环中迭代它们。Zend_Dom_Query如何获取当前节点的html代码

$html = <<<HTML 
    <div id="test"> 
    <span>1</span> 
    <span>2</span> 
    </div> 
HTML; 
$dom= new Zend_Dom_Query($html); 
$results = $dom->query('span'); 
foreach($results as $node){ 
... 
} 

如何获取节点的html代码? (不innerHTML的,完整的HTML代码<span>1</span>

回答

2
$htmlNode = iconv('UTF-8','ISO-8859-1',$results->getDocument()->saveXML($node)); 

语言Iconv存在这里,因为我有俄文字符。

+0

你能解释一下吗?这对我不起作用! – 3ehrang 2013-05-29 11:56:38

+0

@Behrang显示代码。 – 2013-05-29 12:09:11

2

我最近在Zend_Dom_Query上工作。有一个非常困难的时间来解决这个问题。最后得到了解决方案。所以这个答案是针对那些仍在那里挣扎的人。

$dom = new Zend_Dom_Query($html); 
$results = $dom->query('div#test'); 
foreach($results as $node){ 
    if($node->hasChildnodes()) { 
     $childNodes = $node->childNodes; 
     $countOfNodes = $childNodes->length; 
     $firstSpan = $childNodes->item(0)->C14N(); 
    } 
} 

$firstSpan将包含<span>1</span>。您也可以使用$countOfNodes循环节点以获得第2个跨度或第n个元素

请检查​​和PHP:DOMNodeList以了解更多信息。

+0

这很好,但问题是如何获得选择div#测试范围的方法。 – 2013-08-06 13:52:33

+0

你的意思是你想要span元素的内容?你需要第一个跨度的值1吗? – VishwaKumar 2013-08-07 06:39:22

+0

不,我需要 – 2013-08-07 06:57:02