1--TEST-- 2Dom\HTMLDocument::createFromString()/createFromFile() with LIBXML_HTML_NOIMPLIED 3--EXTENSIONS-- 4dom 5--FILE-- 6<?php 7function test(string $html) { 8 echo "Testing: $html\n"; 9 $dom = Dom\HTMLDocument::createFromString($html, LIBXML_HTML_NOIMPLIED | LIBXML_NOERROR); 10 $output = $dom->saveHtml(); 11 echo $output, "\n"; 12 13 // Also test the loadHTMLFile variation. We won't print out the result, just checking the result is the same. 14 $temp = fopen(__DIR__."/DOM_HTMLDocument_loadHTML_LIBXML_HTML_NOIMPLIED_input.tmp", "w"); 15 fwrite($temp, $html); 16 fclose($temp); 17 $dom = Dom\HTMLDocument::createFromFile(__DIR__."/DOM_HTMLDocument_loadHTML_LIBXML_HTML_NOIMPLIED_input.tmp", LIBXML_HTML_NOIMPLIED | LIBXML_NOERROR); 18 var_dump($output === $dom->saveHtml()); 19} 20 21echo "--- Missing html, head, body ---\n"; 22test(""); 23test("foobarbaz"); 24test("<p>foo</p>"); 25echo "--- Missing html, head ---\n"; 26test("<body><p>foo</p></body>"); 27test("<title>x</title><p>foo</p>"); 28echo "--- Missing html, body ---\n"; 29test("<!-- bar --><head><title>x</title><!-- foo --></head><p>foo</p><!-- bar -->"); 30echo "--- Missing html ---\n"; 31test("<head><title>x</title></head><body><p>foo</p></body>"); 32echo "--- Missing head, body ---\n"; 33test("<html>foobar</html>"); 34test("<html><!-- foo --><title>a</title><p>foo</p></html><!-- bar -->"); 35echo "--- Missing head ---\n"; 36test("<html><!-- foo --><body>hi</body></html>"); 37echo "--- Missing nothing ---\n"; 38test("<html><head><title>x</title></head><!-- foo --><body><p>foo</p></body></html>"); 39echo "--- Malformed document ---\n"; 40test("<!-- start --><body><head><html>foo</html></head></body><!-- end -->"); 41?> 42--CLEAN-- 43<?php 44@unlink(__DIR__."/DOM_HTMLDocument_loadHTML_LIBXML_HTML_NOIMPLIED_input.tmp"); 45?> 46--EXPECT-- 47--- Missing html, head, body --- 48Testing: 49 50bool(true) 51Testing: foobarbaz 52foobarbaz 53bool(true) 54Testing: <p>foo</p> 55<p>foo</p> 56bool(true) 57--- Missing html, head --- 58Testing: <body><p>foo</p></body> 59<body><p>foo</p></body> 60bool(true) 61Testing: <title>x</title><p>foo</p> 62<title>x</title><p>foo</p> 63bool(true) 64--- Missing html, body --- 65Testing: <!-- bar --><head><title>x</title><!-- foo --></head><p>foo</p><!-- bar --> 66<!-- bar --><head><title>x</title><!-- foo --></head><p>foo</p><!-- bar --> 67bool(true) 68--- Missing html --- 69Testing: <head><title>x</title></head><body><p>foo</p></body> 70<head><title>x</title></head><body><p>foo</p></body> 71bool(true) 72--- Missing head, body --- 73Testing: <html>foobar</html> 74<html>foobar</html> 75bool(true) 76Testing: <html><!-- foo --><title>a</title><p>foo</p></html><!-- bar --> 77<html><!-- foo --><title>a</title><p>foo</p></html><!-- bar --> 78bool(true) 79--- Missing head --- 80Testing: <html><!-- foo --><body>hi</body></html> 81<html><!-- foo --><body>hi</body></html> 82bool(true) 83--- Missing nothing --- 84Testing: <html><head><title>x</title></head><!-- foo --><body><p>foo</p></body></html> 85<html><head><title>x</title></head><!-- foo --><body><p>foo</p></body></html> 86bool(true) 87--- Malformed document --- 88Testing: <!-- start --><body><head><html>foo</html></head></body><!-- end --> 89<!-- start --><body>foo</body><!-- end --> 90bool(true) 91