3v4l.org

run code in 300+ PHP versions simultaneously
<?php $html = <<<HTML <table cellspacing="1" cellpadding="1" class="troop_details inAttack" > <thead> <tr> <td class="role"> <a href="/karte.php?d=91629">02]</a> </td> <td colspan="11" class="troopHeadline"> <a class="markAttack" onclick="Travian.AttackSymbol.markAttackSymbol(29447487);return false;"><img id="markSymbol_29447487" class="markAttack markAttack0" src="/img/x.gif" title="mark attack" alt="mark attack" /></a> <a href="/karte.php?d=91628">Uanm attacks 01] #WorkInProgress</a> </td> </tr> </thead> <tbody class="units"> <tr> <th class="coords"> &#x202d;<span class="coordinates coordinatesWrapper coordinatesAligned coordinatesltr"><span class="coordinateX">(&#x202d;0&#x202c;</span><span class="coordinatePipe">|</span><span class="coordinateY">&#x202d;&minus;&#x202d;28&#x202c;&#x202c;)</span></span>&#x202c; </th> <td class="uniticon"> <img class="unit u21" title="Phalanx: 0:04:17" alt="Phalanx" src="/img/x.gif" /> </td> <td class="uniticon"> <img class="unit u22" title="Swordsman: 0:05:00" alt="Swordsman" src="/img/x.gif" /> </td> <td class="uniticon"> <img class="unit u23" title="Pathfinder: 0:01:46" alt="Pathfinder" src="/img/x.gif" /> </td> <td class="uniticon"> <img class="unit u24" title="Theutates Thunder: 0:01:35" alt="Theutates Thunder" src="/img/x.gif" /> </td> <td class="uniticon"> <img class="unit u25" title="Druidrider: 0:01:53" alt="Druidrider" src="/img/x.gif" /> </td> <td class="uniticon"> <img class="unit u26" title="Haeduan: 0:02:18" alt="Haeduan" src="/img/x.gif" /> </td> <td class="uniticon"> <img class="unit u27" title="Ram: 0:07:30" alt="Ram" src="/img/x.gif" /> </td> <td class="uniticon"> <img class="unit u28" title="Trebuchet: 0:10:00" alt="Trebuchet" src="/img/x.gif" /> </td> <td class="uniticon"> <img class="unit u29" title="Chieftain: 0:06:00" alt="Chieftain" src="/img/x.gif" /> </td> <td class="uniticon"> <img class="unit u30" title="Settler: 0:06:00" alt="Settler" src="/img/x.gif" /> </td> <td class="uniticon last"> <img class="unit uhero" title="Hero" alt="Hero" src="/img/x.gif" /> </td> </tr> </tbody> <tbody class="units last"> <tr> <th>Troops</th> <td class="unit"> 1 </td> <td class="unit none"> 0 </td> <td class="unit none"> 0 </td> <td class="unit none"> 0 </td> <td class="unit none"> 0 </td> <td class="unit none"> 0 </td> <td class="unit none"> 0 </td> <td class="unit none"> 0 </td> <td class="unit none"> 0 </td> <td class="unit none"> 0 </td> <td class="unit none last"> 0 </td> </tr> </tbody> <tbody class="infos"> <tr> <th>Arrival</th> <td colspan="11"> <div class="in">in&nbsp;<span class="timer" counting="down" value="246">0:04:06</span>&nbsp;hrs.</div> <div class="at"><span>at&nbsp;14:23:09</span><span> </span></div> </td> </tr> </tbody> </table> HTML; $dom = new DOMDocument; libxml_use_internal_errors(true); $dom->loadHTML($html); $xpath = new DOMXPath($dom); $tablePath = $xpath->query("//table[contains(@class, 'troop_details') and contains(@class, 'inAttack')]")[0]->getNodePath(); $xy = ltrim($xpath->query("$tablePath//span[@class='coordinateX']")[0]->nodeValue, '(') . ' ' . rtrim($xpath->query("$tablePath//span[@class='coordinateY']")[0]->nodeValue, ')'); $units = []; foreach ($xpath->query("$tablePath//tbody[contains(@class, 'units') and contains(@class, 'last')]//td[contains(@class, 'unit')]/text()") as $unit) { $units[] = trim($unit->nodeValue); } var_export($xy); echo "\n"; var_export(implode(' ', $units));
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 53, Position 2 = 61
Branch analysis from position: 53
2 jumps found. (Code = 78) Position 1 = 54, Position 2 = 61
Branch analysis from position: 54
1 jumps found. (Code = 42) Position 1 = 53
Branch analysis from position: 53
Branch analysis from position: 61
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 61
filename:       /in/H0PZP
function name:  (null)
number of ops:  74
compiled vars:  !0 = $html, !1 = $dom, !2 = $xpath, !3 = $tablePath, !4 = $xy, !5 = $units, !6 = $unit
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, '%3Ctable+cellspacing%3D%221%22+cellpadding%3D%221%22+class%3D%22troop_details+inAttack%22%0A++++++++++++%3E%0A++++++++++++++++%3Cthead%3E%0A++++++++++++++++++++%3Ctr%3E%0A++++++++++++++++++++++++%3Ctd+class%3D%22role%22%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++%3Ca+href%3D%22%2Fkarte.php%3Fd%3D91629%22%3E02%5D%3C%2Fa%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++%3Ctd+colspan%3D%2211%22+class%3D%22troopHeadline%22%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++%3Ca+class%3D%22markAttack%22+onclick%3D%22Travian.AttackSymbol.markAttackSymbol%2829447487%29%3Breturn+false%3B%22%3E%3Cimg+id%3D%22markSymbol_29447487%22+class%3D%22markAttack+markAttack0%22+src%3D%22%2Fimg%2Fx.gif%22+title%3D%22mark+attack%22+alt%3D%22mark+attack%22+%2F%3E%3C%2Fa%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%3Ca+href%3D%22%2Fkarte.php%3Fd%3D91628%22%3EUanm+attacks+01%5D+%23WorkInProgress%3C%2Fa%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++%3C%2Ftr%3E%0A++++++++++++++++%3C%2Fthead%3E%0A++++++++++++++++%3Ctbody+class%3D%22units%22%3E%0A++++++++++++++++++++%3Ctr%3E%0A++++++++++++++++++++++++%3Cth+class%3D%22coords%22%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++%26%23x202d%3B%3Cspan+class%3D%22coordinates+coordinatesWrapper+coordinatesAligned+coordinatesltr%22%3E%3Cspan+class%3D%22coordinateX%22%3E%28%26%23x202d%3B0%26%23x202c%3B%3C%2Fspan%3E%3Cspan+class%3D%22coordinatePipe%22%3E%7C%3C%2Fspan%3E%3Cspan+class%3D%22coordinateY%22%3E%26%23x202d%3B%26minus%3B%26%23x202d%3B28%26%23x202c%3B%26%23x202c%3B%29%3C%2Fspan%3E%3C%2Fspan%3E%26%23x202c%3B+++++++++++++++++++++++++++++++++++%3C%2Fth%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22uniticon%22%3E%0A++++++++++++++++++++++++++++++++%3Cimg+class%3D%22unit+u21%22+title%3D%22Phalanx%3A+0%3A04%3A17%22+alt%3D%22Phalanx%22+src%3D%22%2Fimg%2Fx.gif%22+%2F%3E++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22uniticon%22%3E%0A++++++++++++++++++++++++++++++++%3Cimg+class%3D%22unit+u22%22+title%3D%22Swordsman%3A+0%3A05%3A00%22+alt%3D%22Swordsman%22+src%3D%22%2Fimg%2Fx.gif%22+%2F%3E++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22uniticon%22%3E%0A++++++++++++++++++++++++++++++++%3Cimg+class%3D%22unit+u23%22+title%3D%22Pathfinder%3A+0%3A01%3A46%22+alt%3D%22Pathfinder%22+src%3D%22%2Fimg%2Fx.gif%22+%2F%3E++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22uniticon%22%3E%0A++++++++++++++++++++++++++++++++%3Cimg+class%3D%22unit+u24%22+title%3D%22Theutates+Thunder%3A+0%3A01%3A35%22+alt%3D%22Theutates+Thunder%22+src%3D%22%2Fimg%2Fx.gif%22+%2F%3E++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22uniticon%22%3E%0A++++++++++++++++++++++++++++++++%3Cimg+class%3D%22unit+u25%22+title%3D%22Druidrider%3A+0%3A01%3A53%22+alt%3D%22Druidrider%22+src%3D%22%2Fimg%2Fx.gif%22+%2F%3E++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22uniticon%22%3E%0A++++++++++++++++++++++++++++++++%3Cimg+class%3D%22unit+u26%22+title%3D%22Haeduan%3A+0%3A02%3A18%22+alt%3D%22Haeduan%22+src%3D%22%2Fimg%2Fx.gif%22+%2F%3E++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22uniticon%22%3E%0A++++++++++++++++++++++++++++++++%3Cimg+class%3D%22unit+u27%22+title%3D%22Ram%3A+0%3A07%3A30%22+alt%3D%22Ram%22+src%3D%22%2Fimg%2Fx.gif%22+%2F%3E++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22uniticon%22%3E%0A++++++++++++++++++++++++++++++++%3Cimg+class%3D%22unit+u28%22+title%3D%22Trebuchet%3A+0%3A10%3A00%22+alt%3D%22Trebuchet%22+src%3D%22%2Fimg%2Fx.gif%22+%2F%3E++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22uniticon%22%3E%0A++++++++++++++++++++++++++++++++%3Cimg+class%3D%22unit+u29%22+title%3D%22Chieftain%3A+0%3A06%3A00%22+alt%3D%22Chieftain%22+src%3D%22%2Fimg%2Fx.gif%22+%2F%3E++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22uniticon%22%3E%0A++++++++++++++++++++++++++++++++%3Cimg+class%3D%22unit+u30%22+title%3D%22Settler%3A+0%3A06%3A00%22+alt%3D%22Settler%22+src%3D%22%2Fimg%2Fx.gif%22+%2F%3E++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22uniticon+last%22%3E%0A++++++++++++++++++++++++++++++++%3Cimg+class%3D%22unit+uhero%22+title%3D%22Hero%22+alt%3D%22Hero%22+src%3D%22%2Fimg%2Fx.gif%22+%2F%3E+++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++%3C%2Ftr%3E%0A++++++++++++++++%3C%2Ftbody%3E%0A++++++++%0A++++++++++++++++%3Ctbody+class%3D%22units+last%22%3E%0A++++++++++++++++++++%3Ctr%3E%0A++++++++++++++++++++++++%3Cth%3ETroops%3C%2Fth%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22unit%22%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1+++++++++++++++++++++++++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22unit+none%22%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0+++++++++++++++++++++++++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22unit+none%22%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0+++++++++++++++++++++++++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22unit+none%22%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0+++++++++++++++++++++++++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22unit+none%22%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0+++++++++++++++++++++++++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22unit+none%22%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0+++++++++++++++++++++++++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22unit+none%22%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0+++++++++++++++++++++++++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22unit+none%22%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0+++++++++++++++++++++++++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22unit+none%22%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0+++++++++++++++++++++++++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22unit+none%22%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0+++++++++++++++++++++++++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++++++++++%3Ctd+class%3D%22unit+none+last%22%3E%0A++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++0+++++++++++++++++++++++++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++++++++++++++++++%3C%2Ftr%3E%0A++++++++++++++++%3C%2Ftbody%3E%0A++++++++%0A++++++++++++++++%0A++++++++++++++++%3Ctbody+class%3D%22infos%22%3E%0A++++++++++++++++++++%3Ctr%3E%0A++++++++++++++++++++++++%3Cth%3EArrival%3C%2Fth%3E%0A++++++++++++++++++++++++%3Ctd+colspan%3D%2211%22%3E%0A++++++++++++++++++++++++++++%3Cdiv+class%3D%22in%22%3Ein%26nbsp%3B%3Cspan++class%3D%22timer%22+counting%3D%22down%22+value%3D%22246%22%3E0%3A04%3A06%3C%2Fspan%3E%26nbsp%3Bhrs.%3C%2Fdiv%3E%0A++++++++++++++++++++++++++++%3Cdiv+class%3D%22at%22%3E%3Cspan%3Eat%26nbsp%3B14%3A23%3A09%3C%2Fspan%3E%3Cspan%3E+%3C%2Fspan%3E%3C%2Fdiv%3E%0A++++++++++++++++++++++++%3C%2Ftd%3E%0A++++++++++++++++++++%3C%2Ftr%3E%0A++++++++++++++++%3C%2Ftbody%3E%0A++++++++++++%3C%2Ftable%3E'
   87     1        NEW                                              $8      'DOMDocument'
          2        DO_FCALL                                      0          
          3        ASSIGN                                                   !1, $8
   88     4        INIT_FCALL                                               'libxml_use_internal_errors'
          5        SEND_VAL                                                 <true>
          6        DO_ICALL                                                 
   89     7        INIT_METHOD_CALL                                         !1, 'loadHTML'
          8        SEND_VAR_EX                                              !0
          9        DO_FCALL                                      0          
   90    10        NEW                                              $13     'DOMXPath'
         11        SEND_VAR_EX                                              !1
         12        DO_FCALL                                      0          
         13        ASSIGN                                                   !2, $13
   92    14        INIT_METHOD_CALL                                         !2, 'query'
         15        SEND_VAL_EX                                              '%2F%2Ftable%5Bcontains%28%40class%2C+%27troop_details%27%29+and+contains%28%40class%2C+%27inAttack%27%29%5D'
         16        DO_FCALL                                      0  $16     
         17        FETCH_DIM_R                                      ~17     $16, 0
         18        INIT_METHOD_CALL                                         ~17, 'getNodePath'
         19        DO_FCALL                                      0  $18     
         20        ASSIGN                                                   !3, $18
   94    21        INIT_FCALL                                               'ltrim'
         22        INIT_METHOD_CALL                                         !2, 'query'
         23        NOP                                                      
         24        FAST_CONCAT                                      ~20     !3, '%2F%2Fspan%5B%40class%3D%27coordinateX%27%5D'
         25        SEND_VAL_EX                                              ~20
         26        DO_FCALL                                      0  $21     
         27        FETCH_DIM_R                                      ~22     $21, 0
         28        FETCH_OBJ_R                                      ~23     ~22, 'nodeValue'
         29        SEND_VAL                                                 ~23
         30        SEND_VAL                                                 '%28'
         31        DO_ICALL                                         $24     
   95    32        CONCAT                                           ~25     $24, '+'
   96    33        INIT_FCALL                                               'rtrim'
         34        INIT_METHOD_CALL                                         !2, 'query'
         35        NOP                                                      
         36        FAST_CONCAT                                      ~26     !3, '%2F%2Fspan%5B%40class%3D%27coordinateY%27%5D'
         37        SEND_VAL_EX                                              ~26
         38        DO_FCALL                                      0  $27     
         39        FETCH_DIM_R                                      ~28     $27, 0
         40        FETCH_OBJ_R                                      ~29     ~28, 'nodeValue'
         41        SEND_VAL                                                 ~29
         42        SEND_VAL                                                 '%29'
         43        DO_ICALL                                         $30     
         44        CONCAT                                           ~31     ~25, $30
   94    45        ASSIGN                                                   !4, ~31
   98    46        ASSIGN                                                   !5, <array>
   99    47        INIT_METHOD_CALL                                         !2, 'query'
         48        NOP                                                      
         49        FAST_CONCAT                                      ~34     !3, '%2F%2Ftbody%5Bcontains%28%40class%2C+%27units%27%29+and+contains%28%40class%2C+%27last%27%29%5D%2F%2Ftd%5Bcontains%28%40class%2C+%27unit%27%29%5D%2Ftext%28%29'
         50        SEND_VAL_EX                                              ~34
         51        DO_FCALL                                      0  $35     
         52      > FE_RESET_R                                       $36     $35, ->61
         53    > > FE_FETCH_R                                               $36, !6, ->61
  100    54    >   INIT_FCALL                                               'trim'
         55        FETCH_OBJ_R                                      ~38     !6, 'nodeValue'
         56        SEND_VAL                                                 ~38
         57        DO_ICALL                                         $39     
         58        ASSIGN_DIM                                               !5
         59        OP_DATA                                                  $39
   99    60      > JMP                                                      ->53
         61    >   FE_FREE                                                  $36
  103    62        INIT_FCALL                                               'var_export'
         63        SEND_VAR                                                 !4
         64        DO_ICALL                                                 
  104    65        ECHO                                                     '%0A'
  105    66        INIT_FCALL                                               'var_export'
         67        INIT_FCALL                                               'implode'
         68        SEND_VAL                                                 '+'
         69        SEND_VAR                                                 !5
         70        DO_ICALL                                         $41     
         71        SEND_VAR                                                 $41
         72        DO_ICALL                                                 
         73      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
287.34 ms | 1016 KiB | 19 Q