在Symfony的DomCrawler中打破每个方法

时间:2016-02-14 21:05:10

标签: php symfony domcrawler

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

1 个答案:

答案 0 :(得分:1)

问题#1 - 你试图在if语句中突破。

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

  

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

来自Symfony DomCrawler Documentation

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