我正在尝试过滤特定元素,然后一旦找到文本,我想记录位置并突破each
方法。但我无法突破它我得到PHP错误Cannot break/continue 2 levels
这是我正在使用的当前代码:
$crawler->filter('#title')->each(function ($node) use ($new_text, $new_place, $place, $number) {
// If number is found, record its place
if (strpos($node->text(), $number) !== false) {
$new_place = $place;
$new_text = $node->text();
break;
}
$place++;
});
答案 0 :(得分:1)
问题#1 - 你试图在if语句中突破。
问题#2 - 你的匿名函数实际上并没有返回任何值。
匿名函数接收节点(作为Crawler)并将位置作为参数。结果是匿名函数调用返回的值数组。
来自Symfony DomCrawler Documentation
编辑:如果您使用它来搜索列表中的第n个元素,您将需要切换到使用xpath。