2013-03-13 89 views
0

我想从html中获取子节点的值。在html中获取子节点的值

我想什么: -

$data = $dom->getElementById($identifier); 
$node = $data->childNodes; 
foreach($node as $node) 
    { 
      echo $node->nodeName; 
      echo $node->nodeValue; 

      } 
    } 

我能够得到所有的childNodes值,即使childtag没有值 我得到一个空字符串。

如果标签有合适的值,有没有办法获取值?

更新: -

我htmldata: -

<div id="myid"> //I give this id as input 
<h1> Some data 1</h1> 
<script type=".."> google adsense details </script> 
<p class="some class"> </p> 
<div class="some class1"></div> 
<h2>data2</h2> 
<p>SOme more data...blah blah..</p> 
</div> 

我想要的输出: -

Some data 1 
    data2 
    SOme more data...blah blah.. 

什么我得到: -

Some data 1 
    googleadsense details//i am getting values inside script as well 
    //blanc data which includes many spaces of tag p 
    //blanc data which includes many spaces of tag div 
    data2 
    SOme more data...blah blah.. 
+0

'(如$ $节点节点)'或'($数据作为$节点)'?? – 2013-03-13 05:49:04

+0

我改变了代码... – 2013-03-13 05:50:01

+0

表决了什么? – 2013-03-13 05:51:12

回答

1

经过一番测试,这应该为你想完成什么工作:

1日编辑:该解决方案占通过内部标识多个子节点循环。

2nd编辑:此解决方案说明了您不希望返回的标签/值。

第3编辑:了解原始问题的细节和真正无关的更新问题。

$dom = new DOMDocument(); 
$html = '<div id="myid"> //I give this id as input<h1> Some data 1</h1><script type=".."> google adsense details </script><p class="some class"></p><div class="some class1"></div><h2>data2</h2><p>SOme more data...blah blah..</p></div>'; 
$dom->loadHTML($html); 

$identifier = "myid"; 
$id_nodes = $dom->getElementById($identifier); 

foreach($id_nodes->childNodes as $node) 
{ 
    // Blacklist for what you do not want in your output: 
    if($node->nodeName != "script" && $node->nodeName != "#text" && $node->nodeValue != '') { 
     echo $node->nodeValue . "<br />"; 
    } 
} 

上述脚本的输出是:

Some data 1 
data2 
SOme more data...blah blah.. 
+0

你没有得到我的观点........我试图从html访问子节点, – 2013-03-13 06:25:45

+0

我的不好,简单的修复,但给我2,我的帖子将更新 – 2013-03-13 06:30:46

+0

我已编辑我的问题,你可以看看,你会清楚的想法 – 2013-03-13 06:31:32

0

检查echo之前的值?

foreach($data as $node) 
{ 
    if(strlen($node->nodeValue) > 0) 
{ 
    echo $node->nodeName; 
    echo $node->nodeValue; 
} 
} 
+0

我检查了ny工作伙计 – 2013-03-13 05:52:06