File tree Expand file tree Collapse file tree 3 files changed +46
-1
lines changed Expand file tree Collapse file tree 3 files changed +46
-1
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,10 @@ PHP NEWS
11
11
1600). (Derick, T. Carter)
12
12
. Fixed bug #61599 (Wrong Day of Week). (Derick, T. Carter)
13
13
14
+ - DOM:
15
+ . Fixed bug #65196 (Passing DOMDocumentFragment to DOMDocument::saveHTML()
16
+ Produces invalid Markup). (Mike)
17
+
14
18
- XSL
15
19
. Fixed bug #49634 (Segfault throwing an exception in a XSL registered
16
20
function). (Mike)
Original file line number Diff line number Diff line change @@ -2324,7 +2324,22 @@ PHP_FUNCTION(dom_document_save_html)
2324
2324
RETURN_FALSE ;
2325
2325
}
2326
2326
2327
- size = htmlNodeDump (buf , docp , node );
2327
+ if (node -> type == XML_DOCUMENT_FRAG_NODE ) {
2328
+ int one_size ;
2329
+
2330
+ for (node = node -> children ; node ; node = node -> next ) {
2331
+ one_size = htmlNodeDump (buf , docp , node );
2332
+
2333
+ if (one_size >= 0 ) {
2334
+ size += one_size ;
2335
+ } else {
2336
+ size = -1 ;
2337
+ break ;
2338
+ }
2339
+ }
2340
+ } else {
2341
+ size = htmlNodeDump (buf , docp , node );
2342
+ }
2328
2343
if (size >= 0 ) {
2329
2344
mem = (xmlChar * ) xmlBufferContent (buf );
2330
2345
if (!mem ) {
Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ bug #65196 (Passing DOMDocumentFragment to DOMDocument::saveHTML() Produces invalid Markup)
3
+ --SKIPIF--
4
+ <?php
5
+ extension_loaded ("dom " ) or die ("skip need ext/dom " );
6
+ ?>
7
+ --FILE--
8
+ <?php
9
+ $ dom = new DOMDocument ();
10
+
11
+ $ frag1 = $ dom ->createDocumentFragment ();
12
+ var_dump ($ dom ->saveHTML ($ frag1 ));
13
+
14
+ $ frag2 = $ dom ->createDocumentFragment ();
15
+ $ div = $ dom ->createElement ('div ' );
16
+ $ div ->appendChild ($ dom ->createElement ('span ' ));
17
+ $ frag2 ->appendChild ($ div );
18
+ $ frag2 ->appendChild ($ dom ->createElement ('div ' ));
19
+ $ frag2 ->appendChild ($ dom ->createElement ('div ' ));
20
+ var_dump ($ dom ->saveHTML ($ frag2 ));
21
+ ?>
22
+ ===DONE===
23
+ --EXPECT--
24
+ string(0) ""
25
+ string(46) "<div><span></span></div><div></div><div></div>"
26
+ ===DONE===
You can’t perform that action at this time.
0 commit comments