0

HTMLから子ノードの値を取得しようとしています。

私が試したこと: -

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

            }
     }

childtag に値がなくても、空の文字列を取得している場合でも、すべての childnodes 値を取得できます。

タグに適切な値がある場合、値を取得する方法はありますか???

更新しました:-

私の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..
4

2 に答える 2

1

いくつかのテストの後、これはあなたが達成しようとしていることに対してうまくいくはずです:

1st EDIT:このソリューションは、複数のサブノードが識別子内をループすることを考慮しています。

2 番目の編集:このソリューションでは、返されたくないタグ/値を指定します。

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..
于 2013-03-13T06:23:24.867 に答える
0

エコーの前に値を確認しますか?

foreach($data as $node)
{
  if(strlen($node->nodeValue) > 0)
{
  echo $node->nodeName;
  echo $node->nodeValue;
}
}
于 2013-03-13T05:51:37.387 に答える