3v4l.org

run code in 300+ PHP versions simultaneously
<?php $html = '<!DOCTYPE html> <title>Valid HTML5 Document</title> <p>Paragraph 1</p> <script>console.log("</html>Console log text");</script> <p>Paragraph 2</p>'; // DOMDocument (libxml) $dom = new DOMDocument('1.0', 'UTF-8'); $dom->formatOutput = true; $dom->loadHtml($html); $paragraphs = $dom->getElementsByTagName('p'); echo "\n"; echo "DOMDocument parsing (libxml)\n"; echo "----------------------------\n"; echo "{$paragraphs->length} paragraph elements found:\n"; // 3 paragraphs found (incorrect) foreach ($paragraphs as $p) { echo " * " . trim($p->textContent) . "\n"; } echo "\n"; echo "DOM serialised:\n"; echo $dom->saveHtml(); // DOM/HTMLDocument (lexbor) $newDom = \DOM\HTMLDocument::createFromString($html); $paragraphs = $newDom->getElementsByTagName('p'); echo "\n"; echo "DOM\HTMLDocument parsing (lexbor)\n"; echo "---------------------------------\n"; echo "{$paragraphs->length} paragraph elements found.\n"; // 2 paragraphs found (correct) foreach ($paragraphs as $p) { echo " * " . trim($p->textContent) . "\n"; } echo "\n"; echo "DOM serialised:\n"; echo $newDom->saveHtml();
Output for 8.4.1 - 8.4.2
Warning: DOMDocument::loadHTML(): Unexpected end tag : script in Entity, line: 4 in /in/tXp91 on line 11 DOMDocument parsing (libxml) ---------------------------- 3 paragraph elements found: * Paragraph 1 * Console log text"); * Paragraph 2 DOM serialised: <!DOCTYPE html> <html> <head> <title>Valid HTML5 Document</title> </head> <body> <p>Paragraph 1</p> <script>console.log("</script> </body> </html><html> <p>Console log text"); </p> <p>Paragraph 2</p> </html> DOM\HTMLDocument parsing (lexbor) --------------------------------- 2 paragraph elements found. * Paragraph 1 * Paragraph 2 DOM serialised: <!DOCTYPE html><html><head><title>Valid HTML5 Document</title> </head><body><p>Paragraph 1</p> <script>console.log("</html>Console log text");</script> <p>Paragraph 2</p></body></html>
Output for 8.2.25 - 8.2.26, 8.3.5 - 8.3.15
Warning: DOMDocument::loadHTML(): Unexpected end tag : script in Entity, line: 4 in /in/tXp91 on line 11 DOMDocument parsing (libxml) ---------------------------- 3 paragraph elements found: * Paragraph 1 * Console log text"); * Paragraph 2 DOM serialised: <!DOCTYPE html> <html> <head> <title>Valid HTML5 Document</title> </head> <body> <p>Paragraph 1</p> <script>console.log("</script> </body> </html><html> <p>Console log text"); </p> <p>Paragraph 2</p> </html> Fatal error: Uncaught Error: Class "DOM\HTMLDocument" not found in /in/tXp91:26 Stack trace: #0 {main} thrown in /in/tXp91 on line 26
Process exited with code 255.

preferences:
53.59 ms | 409 KiB | 5 Q