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)
23322332 RETURN_FALSE ;
23332333 }
23342334
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+ }
23362351 if (size >= 0 ) {
23372352 mem = (xmlChar * ) xmlBufferContent (buf );
23382353 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