Bug #70817 [Opn->Nab]: DOMDocument save removes html within a string
Edit report at https://bugs.php.net/bug.php?id=70817&edit=1
ID: 70817
Updated by: googleguy@php.net
Reported by: untuned20 at gmail dot com
Summary: DOMDocument save removes html within a string
-Status: Open
+Status: Not a bug
Type: Bug
Package: DOM XML related
Operating System: Linux
PHP Version: 5.6.14
Block user comment: N
Private report: N
New Comment:
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
This works as expected in all current supported versions of PHP: https://3v4l.org/UEDIL
Previous Comments:
------------------------------------------------------------------------
[2018-06-27 10:16:23] alexeyseliverstov dot dev at gmail dot com
Just tried using this with PHP 7.1 on Ubuntu 16.04. For some reason, closing html tags inside the
script tag are deleted.
This is the warning that appears when I try to execute the code example: "Warning:
DOMDocument::loadHTML(): Unexpected end tag : h1 in Entity, line: 6 in Standard input code on line
5"
------------------------------------------------------------------------
[2015-10-30 00:49:11] untuned20 at gmail dot com
The above test script is wrong, it should be loadHTML() instead.
Test script:
---------------
<?php
$doc = new DOMDocument();
$doc->loadHTML('<html>
<head>
</head>
<body>
<script>
console.log("<h1>hello</h1>");
</script>
</body>
</html>');
echo $doc->saveHTML();
------------------------------------------------------------------------
[2015-10-30 00:44:37] untuned20 at gmail dot com
Description:
------------
When parsing a DOMDocument(), strings containing html are validated and probably shouldn't be.
For example when parsing a <script> tag containing html to be executed, the
parser will validate that html. In the example script, The parser removes the
</h1> leaving an invalid string of "<h1>hello".
Test script:
---------------
<?php
$doc = new DOMDocument();
$doc->loadXML('<html>
<head>
</head>
<body>
<script>
console.log("<h1>hello</h1>");
</script>
</body>
</html>');
echo $doc->saveHTML();
Expected result:
----------------
<html>
<head>
</head>
<body>
<script>
console.log("<h1>hello</h1>");
</script>
</body>
</html>
Actual result:
--------------
<html>
<head>
</head>r
<body>
<script>
console.log("<h1>hello");
</script>
</body>
</html>
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=70817&edit=1
Thread (5 messages)