从DOM的子节点获取内容和类属性值

时间:2017-11-08 14:12:19

标签: php dom

首先抱歉我的英语不好!

这是我简单的cURL结果:

var outputDirectoryRegex = /([\"|\'|\\|\/]dist)([0-9]*)/g; 
很多人都喜欢......

我使用此代码从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;

我希望得到所有结果! (在json中更好)

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

我找到了我的答案

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

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

我写了一个循环并收到所有结果:/

答案 1 :(得分: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
   }
}