Php Symfony DOMCrawler从每个
我试图用DOMCrawler过滤我的html,但如果找到结果,我需要中断 是否可以从Php Symfony DOMCrawler从每个,php,symfony,domcrawler,Php,Symfony,Domcrawler,我试图用DOMCrawler过滤我的html,但如果找到结果,我需要中断 是否可以从每个中断? 或者如何获取$node->text()如果我使用foreach?还是不可能 HTML: 我想获得地位。然后,若状态等于“活动”,我想中断循环 好吧,现在我想出了一个办法 $crawler = $crawler->filter('#ctl00_MainContent_objSearchGrid_dgCorpSearchResults'); foreach ($crawler as $i =>
每个中断?
或者如何获取$node->text()代码>如果我使用foreach
?还是不可能
HTML:
我想获得地位。然后,若状态等于“活动”,我想中断循环
好吧,现在我想出了一个办法
$crawler = $crawler->filter('#ctl00_MainContent_objSearchGrid_dgCorpSearchResults');
foreach ($crawler as $i => $content) {
$crawler = new Crawler($content);
foreach ($crawler->filter('#ctl00_MainContent_objSearchGrid_dgCorpSearchResults') as $node) {
$longStatus = $node->nodeValue;
echo $longStatus;
}
}
但是现在我不知道如何在
中只获得第三个
,而你不能从$crawler->each()
中中断,当然你不能使用中断退出函数,并且你不能返回任何东西,因此$crawler->each()
将停止迭代,但你还有几个选择
例外情况
退出大多数函数始终是一个选项
foreach
当您自己得到它时,您可以从$crawler->each()
切换到foreach
。
但这比你想象的要简单。替换
$crawler->each(function($element) {
your_code();
});
具有
无需更改代码中的任何内容。您的原始代码变成
...
foreach($crawler->filter('table tr') as $context) {
$element = new Crawler($content);
$status = $element->filter('td')->eq(2)->text();
echo $status;
if ($status == 'Active') {
$this->available = false;
break;
}
}
你仍然可以用同样的方法获得第三个
看起来不可能。你能给出一个示例文档并描述你想要得到的结果吗?@xabbuh嘿,更新了我的问题。你是否尝试返回而不是中断?是的,这是我尝试的第一个。它只是打印所有结果,而不是破坏结果。
$crawler->each(function($element) {
your_code();
});
foreach($crawler as $content) {
$element = new Crawler($content);
your_code();
}
...
foreach($crawler->filter('table tr') as $context) {
$element = new Crawler($content);
$status = $element->filter('td')->eq(2)->text();
echo $status;
if ($status == 'Active') {
$this->available = false;
break;
}
}