DomCrawler 获取特定元素后的元素内容
DomCrawler get element contents after specific element
我正在尝试获取紧跟在另一个元素之后的元素内容。下面是一些示例代码:
<header>2010</header>
<div>
<a href="">Some data</a>
<a href="">Some data</a>
</div>
<header>2011</header>
<div>
<a href="">Some data</a>
<a href="">Some data</a>
</div>
我需要按年份对数据进行排序,我已经尝试了一些方法,但对于 2010 年,它需要所有年份的数据。
$crawler->filter('header')->each(function(Crawler $c) {
$year = $c->text();
$next = $c->nextAll();
$next->filter('div a')->each(function($node){
$node->text();
});
});
在获得两个 headers 之间的所有 div a
后如何让它停止?
在你的情况下,你只能从 nextAll
中获取 first 节点,因为第一个项目是 div
,只过滤 a
它:
$crawler->filter('header')->each(function(Crawler $c) {
$year = $c->text();
dump($year);
$next = $c->nextAll()->first();
$next->filter('a')->each(function($node){
dump($node->text());
});
});
我正在尝试获取紧跟在另一个元素之后的元素内容。下面是一些示例代码:
<header>2010</header>
<div>
<a href="">Some data</a>
<a href="">Some data</a>
</div>
<header>2011</header>
<div>
<a href="">Some data</a>
<a href="">Some data</a>
</div>
我需要按年份对数据进行排序,我已经尝试了一些方法,但对于 2010 年,它需要所有年份的数据。
$crawler->filter('header')->each(function(Crawler $c) {
$year = $c->text();
$next = $c->nextAll();
$next->filter('div a')->each(function($node){
$node->text();
});
});
在获得两个 headers 之间的所有 div a
后如何让它停止?
在你的情况下,你只能从 nextAll
中获取 first 节点,因为第一个项目是 div
,只过滤 a
它:
$crawler->filter('header')->each(function(Crawler $c) {
$year = $c->text();
dump($year);
$next = $c->nextAll()->first();
$next->filter('a')->each(function($node){
dump($node->text());
});
});