在Symfony Crawler中循环嵌套节点

时间:2015-06-01 21:51:59

标签: php symfony dom

如何遍历Dom的所有节点。

我使用最新的Symfony Crawler。

简单示例:

<?php

function test()
{
    $crawler = new Crawler($html);

    $crawler
        ->filter('body > ul')
        ->each(function (Crawler $node, $i) {
            loop($node);
        });
}

function loop(Crawler $node)
{
    static $counter;

    if ($node->filter('ul')->count() > 0) {
        loop($node);
    }

    $counter++;
    echo PHP_EOL,'Node: ', $counter, PHP_EOL;
}

我收到一条消息:

  

致命错误:达到最大功能嵌套级别'100',   中止!在   第269行的/.../vendor/symfony/css-selector/XPath/Extension/NodeExtension.php

例如

HTML:

<body>
    <ul>
        <li>
            <ul>
                <li>foo</li>
                <li>bar</li>
            </ul>
        </li>
        <li>baz</li>
    </ul>
    <ul>
        <li>buz</li>
    </ul>
    <ul>
        <li>uaz</li>
    </ul>
</body>

由于

1 个答案:

答案 0 :(得分:2)

增加php.ini中xdebug.max_nesting_level = 250的值: http://xdebug.org/docs/all_settings#max_nesting_level