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 - 匿名関数は実際には値を返しません。

無名関数はノードを (Crawler として) 受け取り、位置を引数として受け取ります。結果は、無名関数呼び出しによって返される値の配列です。

Symfony DomCrawler ドキュメントから

編集: これを使用してリスト内から n 番目の要素を検索する場合は、xpath の使用に切り替える必要があります。

于 2016-02-25T22:09:24.337 に答える