[英]Symfony DomCrawler how to insert html after some element?
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>
我想在<h4>
之后插入一個div
元素,例如
<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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.