在Symfony Crawler中循环嵌套节点


Loop nested nodes in Symfony Crawler

如何遍历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',流产!在/…/vendor/symfony/css-selector/XPath/Extension/NodeExtension.php on line 269

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>

谢谢

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