symfony 2 domCrawler如何获取所有子元素

时间:2015-11-27 08:17:27

标签: symfony domcrawler

也许这是一个愚蠢的问题,但我需要从选定的html页面获取一个包含所有HTML节点的Object。我必须使所有节点都可选,尤其是开始标记。如果有人知道 Typo3 Templavoila 的模板引擎;我认为这最适合它,但我想自己重建它,但我没有任何想法如何将所有打开的标签变成对象。

如果有人可以推送一些细节,实际上,我正在尝试使用domCrawler,但这有点令人困惑....

 foreach ($crawler as $domElement) {
        foreach ($domElement as $test){
            var_dump($test->nodeName);
        }
        var_dump($domElement);
        $html .= $domElement->ownerDocument->saveHTML($domElement);
    }

经过一些研究,我正在取消HTMLPageDom并使用它:

 $css= new HtmlPage();
    $css = new HtmlPage($head);
    $cssNew = $css->filter('link')->each(function ($node) {
        $node= $node->attr('href');
        return $node;
    });

所以这或多或少都有效,但我认为我错过了一些东西。如何将数据附加到$ node-> attr(' href)? 用:

$node->attr('href')->append('data in front of linkuri');

2 个答案:

答案 0 :(得分:0)

您可以尝试这种方式:

/.../

$values = $crawler->filterXpath('//body')->each(function ($node) {
    return $node->html();
});

/.../

答案 1 :(得分:0)

解决方案:

好吧,至少我觉得太熟了:)

这很简单:

$body->filter('img')->setAttribute('src', $this->absPath.$bodySource->filter('img')->attr('src') );