首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTMLDOM嵌套div

HTMLDOM嵌套div
EN

Stack Overflow用户
提问于 2016-07-23 07:17:40
回答 1查看 97关注 0票数 0

嗨,我正在用laravel做htmldom,我的html如下所示

代码语言:javascript
复制
<div class="content">
    <h4 class="title">Now Showing</h4>
    <div class="movies">   
      <div class="movie">
         <h4 class="movie-title">3D: Star Trek Beyond</h4>
            <p class="movie-type">PG</p>
      </div>

      <div class="movie">
         <h4 class="movie-title">Movie 2</h4>
            <p class="movie-type">PG</p>
      </div>

   </div>

   <h4 class="title">Comming Soon</h4>
    <div class="movies">
       <div class="movie">
         <h4 class="movie-title">Some Other</h4>
         <p class="movie-type">PG</p>
       </div>

    </div>
</div>

我想要这样的输出

现在展示了

3D:星际迷航

电影2

即将上市

其他一些

我试过了

代码语言:javascript
复制
    foreach($html->find('div[class=content]') as $content)
        {
//tried this but it only return one item
//$heading = $content->find('h4[class=title]');

          foreach($content->find('div[class=movies]') as $movies)
          {
             foreach($movies->find('div[class=movie]') as $movie)
            {
               $info = $movie->find('h4[class=movie-title]');
               $movie_info[]=array(

                                        'title'=>$info[0]->innertext
                                    );
            }
           $qfx[] = array(
                            'main_title'=>'test',//$heading[1]->innertext,
                            'mov_details' =>$movie_info
                        );


                    unset($movie_info);

          }

        }

    print_r($qfx)

从上面我可以打印

3D:星际迷航

电影2

其他一些

但无法打印主标题,现在显示即将开始, (h4 class="title")请帮助

EN

回答 1

Stack Overflow用户

发布于 2016-07-23 09:05:03

简单的HTML不完全支持xpath,这使得很难找到同级元素。如果将DomDocument与Xpath结合使用,代码将更容易编写。

代码语言:javascript
复制
$dom = new DomDocument;
$dom->loadHTML($str);
$xpath = new DomXpath($dom);

foreach($xpath->query('//div[@class="content"]/h4[@class="title"]') as $title) {
   echo $title->nodeValue . "\n";
   foreach($xpath->query('./following-sibling::div[@class="movies"]/div[@class="movie"]/h4[@class="movie-title"]',$title) as $movieTitle) {
      echo $movieTitle->nodeValue . "\n";
   }
}

演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38539225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档