Bugs & Features
<?php /** * PHP DOM and JavaScript with HTML entities * @link http://stackoverflow.com/q/18487515/367456 */ $doc = new DOMDocument(); $doc->loadHTML('<head/>'); $script = $doc->createElement('script', "\n if (1 < 4) {\n alert(\"hello\");\n }\n"); $head = $doc->getElementsByTagName('head')->item(0); $scriptInHead = $head->appendChild($script); echo 'libxml: ', LIBXML_DOTTED_VERSION, "\n", $doc->saveHTML();
Output for 5.4.35 - 5.4.42, 5.5.19 - 5.5.26, 5.6.3 - 7.0.0alpha2, hhvm-3.6.1 - 3.7.0
libxml: 2.9.2 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html><head><script> if (1 < 4) { alert("hello"); } </script></head></html>
Output for 5.3.25 - 5.3.29, 5.4.16 - 5.4.34, 5.5.0 - 5.5.18, 5.6.0 - 5.6.2
libxml: 2.9.1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html><head><script> if (1 < 4) { alert("hello"); } </script></head></html>
Output for 5.3.15 - 5.3.24, 5.4.5 - 5.4.15
libxml: 2.8.0 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html><head><script> if (1 < 4) { alert("hello"); } </script></head></html>
Output for 5.1.0 - 5.3.14, 5.4.0 - 5.4.4
libxml: 2.7.8 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html><head><script> if (1 < 4) { alert("hello"); } </script></head></html>
Output for 5.0.0 - 5.0.5
libxml: Notice: Use of undefined constant LIBXML_DOTTED_VERSION - assumed 'LIBXML_DOTTED_VERSION' in /in/ATVDG on line 15 LIBXML_DOTTED_VERSION <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html><head><script> if (1 < 4) { alert("hello"); } </script></head></html>
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /in/ATVDG on line 12
Process exited with code 255.
Output for 4.3.0 - 4.3.1, 4.3.5 - 4.4.1
Parse error: parse error, unexpected T_OBJECT_OPERATOR in /in/ATVDG on line 12
Process exited with code 255.
Output for 4.3.2 - 4.3.4
Parse error: parse error in /in/ATVDG on line 12
Process exited with code 255.