3v4l.org

run code in 300+ PHP versions simultaneously
<?php $html = "<div><p><br/>Hello World</p><p><br/></p><p> <br> </p></div>"; $doc = new DOMDocument(); $doc->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); $xpath = new DOMXPath($doc); // find <br> within a <p> that has text content $breaks = $xpath->query("//p[normalize-space()!='']/br"); // and remove them foreach ($breaks as $br) { $br->parentNode->removeChild($br); } echo $doc->saveHTML(); $doc->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); $xpath = new DOMXPath($doc); // find <br> within a <p> that has text content $breaks = $xpath->query("//p[text()!='']/br"); // and remove them foreach ($breaks as $br) { $br->parentNode->removeChild($br); } echo $doc->saveHTML();
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 17, Position 2 = 23
Branch analysis from position: 17
2 jumps found. (Code = 78) Position 1 = 18, Position 2 = 23
Branch analysis from position: 18
1 jumps found. (Code = 42) Position 1 = 17
Branch analysis from position: 17
Branch analysis from position: 23
2 jumps found. (Code = 77) Position 1 = 40, Position 2 = 46
Branch analysis from position: 40
2 jumps found. (Code = 78) Position 1 = 41, Position 2 = 46
Branch analysis from position: 41
1 jumps found. (Code = 42) Position 1 = 40
Branch analysis from position: 40
Branch analysis from position: 46
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 46
Branch analysis from position: 23
filename:       /in/qFbdS
function name:  (null)
number of ops:  51
compiled vars:  !0 = $html, !1 = $doc, !2 = $xpath, !3 = $breaks, !4 = $br
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, '%3Cdiv%3E%3Cp%3E%3Cbr%2F%3EHello+World%3C%2Fp%3E%3Cp%3E%3Cbr%2F%3E%3C%2Fp%3E%3Cp%3E+%3Cbr%3E+%3C%2Fp%3E%3C%2Fdiv%3E'
    4     1        NEW                                              $6      'DOMDocument'
          2        DO_FCALL                                      0          
          3        ASSIGN                                                   !1, $6
    5     4        INIT_METHOD_CALL                                         !1, 'loadHTML'
          5        SEND_VAR_EX                                              !0
          6        SEND_VAL_EX                                              8196
          7        DO_FCALL                                      0          
    6     8        NEW                                              $10     'DOMXPath'
          9        SEND_VAR_EX                                              !1
         10        DO_FCALL                                      0          
         11        ASSIGN                                                   !2, $10
    8    12        INIT_METHOD_CALL                                         !2, 'query'
         13        SEND_VAL_EX                                              '%2F%2Fp%5Bnormalize-space%28%29%21%3D%27%27%5D%2Fbr'
         14        DO_FCALL                                      0  $13     
         15        ASSIGN                                                   !3, $13
   10    16      > FE_RESET_R                                       $15     !3, ->23
         17    > > FE_FETCH_R                                               $15, !4, ->23
   11    18    >   FETCH_OBJ_R                                      ~16     !4, 'parentNode'
         19        INIT_METHOD_CALL                                         ~16, 'removeChild'
         20        SEND_VAR_EX                                              !4
         21        DO_FCALL                                      0          
   10    22      > JMP                                                      ->17
         23    >   FE_FREE                                                  $15
   13    24        INIT_METHOD_CALL                                         !1, 'saveHTML'
         25        DO_FCALL                                      0  $18     
         26        ECHO                                                     $18
   14    27        INIT_METHOD_CALL                                         !1, 'loadHTML'
         28        SEND_VAR_EX                                              !0
         29        SEND_VAL_EX                                              8196
         30        DO_FCALL                                      0          
   15    31        NEW                                              $20     'DOMXPath'
         32        SEND_VAR_EX                                              !1
         33        DO_FCALL                                      0          
         34        ASSIGN                                                   !2, $20
   17    35        INIT_METHOD_CALL                                         !2, 'query'
         36        SEND_VAL_EX                                              '%2F%2Fp%5Btext%28%29%21%3D%27%27%5D%2Fbr'
         37        DO_FCALL                                      0  $23     
         38        ASSIGN                                                   !3, $23
   19    39      > FE_RESET_R                                       $25     !3, ->46
         40    > > FE_FETCH_R                                               $25, !4, ->46
   20    41    >   FETCH_OBJ_R                                      ~26     !4, 'parentNode'
         42        INIT_METHOD_CALL                                         ~26, 'removeChild'
         43        SEND_VAR_EX                                              !4
         44        DO_FCALL                                      0          
   19    45      > JMP                                                      ->40
         46    >   FE_FREE                                                  $25
   22    47        INIT_METHOD_CALL                                         !1, 'saveHTML'
         48        DO_FCALL                                      0  $28     
         49        ECHO                                                     $28
         50      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
141.72 ms | 1007 KiB | 13 Q