2

我试图过滤特定元素,然后一旦找到文本,我想记录位置并突破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++;
});
4

1 回答 1

1

问题 #1 - 您试图从 if 语句中中断。

问题 #2 - 您的匿名函数实际上并没有返回任何值。

匿名函数接收节点(作为爬虫)和位置作为参数。结果是匿名函数调用返回的值数组。

来自Symfony DomCrawler 文档

编辑:如果您使用它从列表中搜索第 n 个元素,您将需要切换到使用 xpath。

于 2016-02-25T22:09:24.337 回答