[英]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.