File tree Expand file tree Collapse file tree 2 files changed +42
-1
lines changed Expand file tree Collapse file tree 2 files changed +42
-1
lines changed Original file line number Diff line number Diff line change @@ -2332,7 +2332,22 @@ PHP_FUNCTION(dom_document_save_html)
2332
2332
RETURN_FALSE ;
2333
2333
}
2334
2334
2335
- size = htmlNodeDump (buf , docp , node );
2335
+ if (node -> type == XML_DOCUMENT_FRAG_NODE ) {
2336
+ int one_size ;
2337
+
2338
+ for (node = node -> children ; node ; node = node -> next ) {
2339
+ one_size = htmlNodeDump (buf , docp , node );
2340
+
2341
+ if (one_size >= 0 ) {
2342
+ size += one_size ;
2343
+ } else {
2344
+ size = -1 ;
2345
+ break ;
2346
+ }
2347
+ }
2348
+ } else {
2349
+ size = htmlNodeDump (buf , docp , node );
2350
+ }
2336
2351
if (size >= 0 ) {
2337
2352
mem = (xmlChar * ) xmlBufferContent (buf );
2338
2353
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