3v4l.org

run code in 500+ PHP versions simultaneously
<?php $html = <<<HTML <div id="my-cats"> <ul class="category_list"> <li class="item reference"> <span class="the_score"><b>35</b></span> <span class="the_category">Reference / Education</span> </li> <li class="item computer"> <span class="the_score"><b>50</b></span> <span class="the_category">Computer / Internet</span> </li> </ul> <ul class="category_list"> <li class="item home"> <span class="the_score"><b>22</b></span> <span class="the_category">Home / Gardening</span> </li> <li class="item home"> <span class="the_score"><b>12</b></span> <span class="the_category">Home / Repair</span> </li> </ul> </div> HTML; $dom = new DOMDocument(); @$dom->loadHTML($html); $finder = new DOMXPath($dom); $cats = $finder->query('//div[@id="my-cats"]//ul[@class="category_list"]//li'); foreach( $cats as $li ){ echo $li->getAttribute('class') . "\n"; $value = trim($finder->query('//span[@class="the_score"]', $li)->item(0)->nodeValue); $key = trim($finder->query('//span[@class="the_category"]', $li)->item(0)->nodeValue); echo "$key : $value\n"; }
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 18, Position 2 = 50
Branch analysis from position: 18
2 jumps found. (Code = 78) Position 1 = 19, Position 2 = 50
Branch analysis from position: 19
1 jumps found. (Code = 42) Position 1 = 18
Branch analysis from position: 18
Branch analysis from position: 50
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 50
filename:       /in/tjJB5
function name:  (null)
number of ops:  52
compiled vars:  !0 = $html, !1 = $dom, !2 = $finder, !3 = $cats, !4 = $li, !5 = $value, !6 = $key
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                       !0, '%0A++++%3Cdiv+id%3D%22my-cats%22%3E%0A++++%0A++++++++%3Cul+class%3D%22category_list%22%3E%0A++++++++%0A++++++++++++%3Cli+class%3D%22item+reference%22%3E%0A++++++++++++++++%3Cspan+class%3D%22the_score%22%3E%3Cb%3E35%3C%2Fb%3E%3C%2Fspan%3E%0A++++++++++++++++%3Cspan+class%3D%22the_category%22%3EReference+%2F+Education%3C%2Fspan%3E%0A++++++++++++%3C%2Fli%3E%0A++++++++++++%0A++++++++++++%3Cli+class%3D%22item+computer%22%3E%0A++++++++++++++++%3Cspan+class%3D%22the_score%22%3E%3Cb%3E50%3C%2Fb%3E%3C%2Fspan%3E%0A++++++++++++++++%3Cspan+class%3D%22the_category%22%3EComputer+%2F+Internet%3C%2Fspan%3E%0A++++++++++++%3C%2Fli%3E%0A++++++++++++%0A++++++++%3C%2Ful%3E%0A++++++++%0A++++++++%3Cul+class%3D%22category_list%22%3E%0A++++++++%0A++++++++++++%3Cli+class%3D%22item+home%22%3E%0A++++++++++++++++%3Cspan+class%3D%22the_score%22%3E%3Cb%3E22%3C%2Fb%3E%3C%2Fspan%3E%0A++++++++++++++++%3Cspan+class%3D%22the_category%22%3EHome+%2F+Gardening%3C%2Fspan%3E%0A++++++++++++%3C%2Fli%3E%0A++++++++++++%0A++++++++++++%3Cli+class%3D%22item+home%22%3E%0A++++++++++++++++%3Cspan+class%3D%22the_score%22%3E%3Cb%3E12%3C%2Fb%3E%3C%2Fspan%3E%0A++++++++++++++++%3Cspan+class%3D%22the_category%22%3EHome+%2F+Repair%3C%2Fspan%3E%0A++++++++++++%3C%2Fli%3E%0A++++++++++++%0A++++++++%3C%2Ful%3E%0A++++++++%0A++++%3C%2Fdiv%3E%0A'
   39     1        NEW                                                  $8      'DOMDocument'
          2        DO_FCALL                                          0          
          3        ASSIGN                                                       !1, $8
   40     4        BEGIN_SILENCE                                        ~11     
          5        INIT_METHOD_CALL                                             !1, 'loadHTML'
          6        SEND_VAR_EX                                                  !0
          7        DO_FCALL                                          0          
          8        END_SILENCE                                                  ~11
   42     9        NEW                                                  $13     'DOMXPath'
         10        SEND_VAR_EX                                                  !1
         11        DO_FCALL                                          0          
         12        ASSIGN                                                       !2, $13
   44    13        INIT_METHOD_CALL                                             !2, 'query'
         14        SEND_VAL_EX                                                  '%2F%2Fdiv%5B%40id%3D%22my-cats%22%5D%2F%2Ful%5B%40class%3D%22category_list%22%5D%2F%2Fli'
         15        DO_FCALL                                          0  $16     
         16        ASSIGN                                                       !3, $16
   46    17      > FE_RESET_R                                           $18     !3, ->50
         18    > > FE_FETCH_R                                                   $18, !4, ->50
   47    19    >   INIT_METHOD_CALL                                             !4, 'getAttribute'
         20        SEND_VAL_EX                                                  'class'
         21        DO_FCALL                                          0  $19     
         22        CONCAT                                               ~20     $19, '%0A'
         23        ECHO                                                         ~20
   48    24        INIT_METHOD_CALL                                             !2, 'query'
         25        SEND_VAL_EX                                                  '%2F%2Fspan%5B%40class%3D%22the_score%22%5D'
         26        SEND_VAR_EX                                                  !4
         27        DO_FCALL                                          0  $21     
         28        INIT_METHOD_CALL                                             $21, 'item'
         29        SEND_VAL_EX                                                  0
         30        DO_FCALL                                          0  $22     
         31        FETCH_OBJ_R                                          ~23     $22, 'nodeValue'
         32        FRAMELESS_ICALL_1                trim                ~24     ~23
         33        ASSIGN                                                       !5, ~24
   49    34        INIT_METHOD_CALL                                             !2, 'query'
         35        SEND_VAL_EX                                                  '%2F%2Fspan%5B%40class%3D%22the_category%22%5D'
         36        SEND_VAR_EX                                                  !4
         37        DO_FCALL                                          0  $26     
         38        INIT_METHOD_CALL                                             $26, 'item'
         39        SEND_VAL_EX                                                  0
         40        DO_FCALL                                          0  $27     
         41        FETCH_OBJ_R                                          ~28     $27, 'nodeValue'
         42        FRAMELESS_ICALL_1                trim                ~29     ~28
         43        ASSIGN                                                       !6, ~29
   50    44        ROPE_INIT                                         4  ~32     !6
         45        ROPE_ADD                                          1  ~32     ~32, '+%3A+'
         46        ROPE_ADD                                          2  ~32     ~32, !5
         47        ROPE_END                                          3  ~31     ~32, '%0A'
         48        ECHO                                                         ~31
   46    49      > JMP                                                          ->18
         50    >   FE_FREE                                                      $18
   51    51      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
143.99 ms | 489 KiB | 9 Q