嗨,我正在用laravel做htmldom,我的html如下所示
<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
即将上市
其他一些
我试过了
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")请帮助
发布于 2016-07-23 09:05:03
简单的HTML不完全支持xpath,这使得很难找到同级元素。如果将DomDocument与Xpath结合使用,代码将更容易编写。
$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";
}
}https://stackoverflow.com/questions/38539225
复制相似问题