3v4l.org

run code in 300+ PHP versions simultaneously
<?php $html = <<<HTML <body> <div>foo</div> <shortcode type="content" /> <div>bar</div> </body> HTML; $replace = <<<HTML <div>content</div> HTML; $dom = new DOMDocument(); libxml_use_internal_errors(true); $dom->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); echo $dom->saveHTML($dom->documentElement); echo PHP_EOL, '---------------------------', PHP_EOL; $xpath = new DOMXPath($dom); $nodes = $xpath->query('//shortcode'); foreach($nodes as $node) { $newHTML = $dom->createDocumentFragment(); $newHTML->appendXML($replace); $node->parentNode->insertBefore($newHTML, $node); $node->parentNode->removeChild($node); } echo $dom->saveHTML($dom->documentElement);
Output for 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.33, 8.2.0 - 8.2.29, 8.3.0 - 8.3.25, 8.4.1 - 8.4.13
<body> <div>foo</div> <shortcode type="content"></shortcode> <div>bar</div> </body> --------------------------- <body> <div>foo</div> <div>content</div> <div>bar</div> </body>

preferences:
118.2 ms | 407 KiB | 5 Q