Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Insert HTML into div tag with PHP

Tags:

html

php

I am trying to put $htmlString into an existing div tag that I have

<?php
    $htmlString = "<ul><li>some items</li><li>some items</li><li>some items</li></ul>";
    $dom = new domDocument;
    $dom->loadHTML($html);
    $div_tag = $dom->getElementById('demo');
    echo $dom->saveHTML($div_tag);
?>

In the div tag, I already have some content and I want to append $htmlString into the div tag

<div id="demo"><h1>Recent Posts</h1></div>

I want the output to be

<div id="demo"><h1>Recent Posts</h1>
<ul><li>some items</li><li>some items</li><li>some items</li></ul>
</div>

As $htmlString is actually produced from another function so I cannot simply do

<div id="demo">
<h1>Recent Posts</h1>
    <?php echo "<ul><li>some items</li><li>some items</li><li>some items</li></ul>" ?>
</div> 
like image 588
Kimberley Chong Avatar asked Jan 04 '23 12:01

Kimberley Chong


1 Answers

Nice and easy, you need a fragment!

<?php

$html = '<div id="demo"><h1>Recent Posts</h1></div>';
$dom = new DomDocument();
$dom->loadHTML($html);

$node = $dom->getElementsByTagName('div')->item(0); // your div to append to

$fragment = $dom->createDocumentFragment();
$fragment->appendXML('<ul><li>some items</li><li>some items</li><li>some items</li></ul>');

$node->appendChild($fragment);

echo $dom->saveHTML();

Which will give you your desired output. Check it out here https://3v4l.org/JrJan

like image 123
delboy1978uk Avatar answered Jan 14 '23 13:01

delboy1978uk