php - Symfony DomCrawler 如何在某些元素之后插入 html?
问题描述
HTML 内容
<div class="card mb-3 template">
<div class="card-body">
<div class="row mt-3">
<div class="col-sm-4">
<h4>This is title</h4>
</div>
<div class="col-sm-8 text-right">
<button>Close</button>
</div>
</div>
</div>
</div>
我想在div
之后插入一个元素<h4>
,例如
<div class="col-sm-4">
<h4>This is title</h4>
<div class="status"></div>
</div>
在 jQuery 中非常简单
$('<div class="status"></div>').insertAfter($('.template').find('h4'));
但是,我怎样才能在 DomCrawler 中做到这一点?
$crawler = new \Symfony\Component\DomCrawler\Crawler($html);
$nodes = $crawler->filter('.template');
foreach ($nodes as $node) { // there are multiple template
// so how to insert the div element after h4
}
解决方案
Symfony DomCrawler 只是 PHP 内置 DOMDocument 类的精美包装器。使用 getNode 将获取您需要执行“insertAfter”方法的元素的 DOMNode 对象。
$crawler = new \Symfony\Component\DomCrawler\Crawler($html);
$domDocument = $this->crawler->getNode(0)->parentNode; //this is how you get domDocument
//creating div
$div = $domDocument->createElement('div');
$div->setAttribute('class', 'status');
//adding div after h4 tag
$h4 = $crawler->filter('h4')->getNode(0);
$h4->parentNode->insertBefore( $div, $h4->nextSibling);
推荐阅读
- python - 情节:一条线,不同的颜色
- python - Clips Beginner:在 python 和 clipspy 的 clips 规则中添加常规 exp 或任何替代选择 *
- linux - 全新操作系统升级上的 MariaDb 无法运行,也无法访问旧数据库
- r - 如何在多面和分组的ggplot中着色条
- r - 在 R 中对列的一个大子集进行平方
- javascript - 如何在javascript中验证卡到期的未来日期
- onflow-cadence - 错误:受限类型不符合限制类型
- java - 'enableDefaultTyping(com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping)' 在 RedisConfig 中已弃用
- c - 从函数返回结构后,文件删除和重命名不起作用
- android - Android平台makefile(Android.bp),如何使用kotlin @Parcelize注解创建aidl文件?