简体   繁体   中英

Insert HTML into div tag with 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> 

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

You can use [ http://php.net/manual/en/domdocument.createelement.php][1]

[1]: http://php.net/manual/en/domdocument.createelement.php , but you need to create all structure for $htmlString. Or you can do like in this answer How to insert HTML to PHP DOMNode?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM