繁体   English   中英

Symfony DOMCrawler:如何更改 html?

[英]Symfony DOMCrawler: How to change html?

如何编辑元素的 html? 我试过这个,但我得到这个错误。

致命错误:未捕获的 InvalidArgumentException:禁止在同一个爬虫中附加来自多个文档的 DOM 节点。

$crawler = new Crawler('<h1>The title</h1>');
$crawler
    ->filter('h1,h2,h3,h4,h5,h6')
    ->each(function (Crawler $crawler, $i) use (&$replace) {
        $crawler->html('<span>test</span>' . $crawler->html());
    });

用这个:

$doc = new DOMDocument;
$doc->loadHTML($html);
$crawler = new Crawler($doc);

$crawler
    ->filter('h1,h2,h3,h4,h5,h6')
    ->each(function (Crawler $crawler) use ($doc) {
        foreach ($crawler as $node) {
            $span = $doc->createElement('span', 'test');
            $node->parentNode->insertBefore($span, $node);
        }
    });

重要提示:使用相同DOMDocument object 创建在Crawler object 中使用的新标签。

DomCrawler 组件文档中所述:

Crawler 的一个实例表示一组 DOMElement 对象,它们是可以遍历的节点......

因此,在操作DOMElements之前,您需要遍历Crawler object 。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM