2013-03-13 90 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