首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony DOMCrawler:如何更改html?

Symfony DOMCrawler:如何更改html?
EN

Stack Overflow用户
提问于 2019-11-11 17:58:01
回答 1查看 2.3K关注 0票数 4

如何编辑元素的html?我试过了,但我发现了这个错误。

致命错误:未登录的InvalidArgumentException:禁止在同一爬虫中从多个文档中附加DOM节点。

代码语言:javascript
复制
$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());
    });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-11 19:16:42

用这个:

代码语言:javascript
复制
$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对象来创建在Crawler对象中使用的新标记。

正如DomCrawler组件文档中所解释的那样:

Crawler的一个实例表示一组DOMElement对象,这些对象是可以遍历的节点。

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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58806401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档