2017-11-08 12 views
0

初めて私の悪い英語を残念に思います!DOMの子ノードからコンテンツとクラス属性の値を取得する

これは私の簡単なcURLの結果である:私は、HTMLから値を抽出するために、このコードを使用し

<li class="result"> 
    <div class="song_info"> 
    <span class="artist_name">art1</span> 
    <span class="song_name">name1</span> 
    <span class="views">100 time</span> 
      </div> 
      </li> 
//again 

<li class="result"> 
     <div class="song_info"> 
     <span class="artist_name">art2</span> 
     <span class="song_name">name2</span> 
     <span class="views">200 time</span> 
       </div> 
      </li> 

、そのような多くの....

$classname = 'song_info'; 
$dom = new DOMDocument; 
$dom->loadHTML($html); // my html result . 
$xpath = new DOMXPath($dom); 
$get = $xpath->query("//*[@class='" . $classname . "']"); 
$text = $get->item(0)->nodeValue; 
echo $text; 

このコードの弾力を私はちょうど最初の結果:

art1 
name1 
100time 

私はすべての結果を取得したい! (jsonでもっと良い)

誰でも助けてくれますか?

答えて

0

DOMXPath::query方法はのDOMNodeListを返します。 Traversableインターフェイスを実装しているため、foreachでループすることができます。変数$getの名前を$nodesに変更して、変数に明示的に何が格納されているかを示します。その後:

foreach ($nodes as $curNode) { 
    $childNodes = $curNode->childNodes; 

    foreach ($childNodes as $curChildNode) { 
     // use $curChildNode->textContent to get content 
     // and $curChildNode->getAttribute('class') to get class name 
    } 
} 
+0

はあなたに感謝します!私はループ中に使用しました。 – Nomad

+0

あなたは大歓迎です。あなたは私の答えを受け入れる必要があります:) – camelsWriteInCamelCase

0

私はループを記述し、すべての結果受け取る私の答え

$text = $get->item(0)->nodeValue; >> Give First Result 

$text = $get->item(1)->nodeValue; >> Give Second Result 

が見つかりました:/

関連する問題