3v4l.org

run code in 300+ PHP versions simultaneously
<?php var_dump([(boolean) 'true', (boolean) 23]);die; $source = <<<XML <?xml version="1.0" encoding="UTF-8"?> <datapacket packet_type="send_data" version="3.15.3.15" level="1" reg_number="705" ogrn="1027808757899" mac_address="50:46:5D:4E:F7:06" comp_name="k415-1" interval_end_date="2015-03-26 14:12:53"> <teachers> <teacher teacher_id="705000000208" fio="Яловенко Любовь Николаевна" uid=""/> <teacher teacher_id="705000000211" fio="Шкарубо Людмила Ивановна" uid=""/> <teacher teacher_id="705000000214" fio="Шибаева Оксана Викторовна" uid=""/> <teacher_delete teacher_id="705000000214" fio="Шибаева Оксана Викторовна" uid=""/> <teacher_delete teacher_id="705000000214" fio="Шибаева Оксана Викторовна" uid=""/> </teachers> <last_marks> <last_mark last_mark_id="705000111240"/> <last_mark last_mark_id="705000111240"/> <last_mark_deleted last_mark_id="705000111240"/> <last_mark_deleted last_mark_id="705000144740"/> <last_mark_deleted last_mark_id="705000200530"/> </last_marks> </datapacket> XML; $reader = new XMLReader(); if ($reader->xml($source)) { var_dump($reader->readString());die; } else { throw new Exeption('Ошибка при разборе XML'); } // LIBXML_ERR_ERROR // LIBXML_ERR_FATAL // LIBXML_ERR_NONE // LIBXML_ERR_WARNING var_dump($xml); die; $xml = simplexml_load_string($string); foreach($xml->children()->children() as $nodeName => $child) { var_dump($child); $child = $child->attributes(); var_dump($child); $child = $child['@attributes']; var_dump($child); die; } die; $xml = new SimpleXMLElement($string); $result = $xml->xpath('teachers'); var_dump($result); die; while(list( , $node) = each($result)) { echo '/teachers: ',$node,"\n"; } /* Относительные пути также работают... */ $result = $xml->xpath('b/c'); while(list( , $node) = each($result)) { echo 'b/c: ',$node,"\n"; } ?>
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 79) Position 1 = -2
filename:       /in/5O0Jb
function name:  (null)
number of ops:  97
compiled vars:  !0 = $source, !1 = $reader, !2 = $xml, !3 = $string, !4 = $child, !5 = $nodeName, !6 = $result, !7 = $node
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   INIT_FCALL                                               'var_dump'
          1        BOOL                                             ~8      'true'
          2        INIT_ARRAY                                       ~9      ~8
          3        BOOL                                             ~10     23
          4        ADD_ARRAY_ELEMENT                                ~9      ~10
          5        SEND_VAL                                                 ~9
          6        DO_ICALL                                                 
          7      > EXIT                                                     
    4     8*       ASSIGN                                                   !0, '%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%0A%3Cdatapacket+packet_type%3D%22send_data%22+version%3D%223.15.3.15%22+level%3D%221%22+reg_number%3D%22705%22+ogrn%3D%221027808757899%22+mac_address%3D%2250%3A46%3A5D%3A4E%3AF7%3A06%22+comp_name%3D%22k415-1%22+interval_end_date%3D%222015-03-26+14%3A12%3A53%22%3E%0A++++%3Cteachers%3E%0A++++++++%3Cteacher+teacher_id%3D%22705000000208%22+fio%3D%22%D0%AF%D0%BB%D0%BE%D0%B2%D0%B5%D0%BD%D0%BA%D0%BE+%D0%9B%D1%8E%D0%B1%D0%BE%D0%B2%D1%8C+%D0%9D%D0%B8%D0%BA%D0%BE%D0%BB%D0%B0%D0%B5%D0%B2%D0%BD%D0%B0%22+uid%3D%22%22%2F%3E%0A++++++++%3Cteacher+teacher_id%3D%22705000000211%22+fio%3D%22%D0%A8%D0%BA%D0%B0%D1%80%D1%83%D0%B1%D0%BE+%D0%9B%D1%8E%D0%B4%D0%BC%D0%B8%D0%BB%D0%B0+%D0%98%D0%B2%D0%B0%D0%BD%D0%BE%D0%B2%D0%BD%D0%B0%22+uid%3D%22%22%2F%3E%0A++++++++%3Cteacher+teacher_id%3D%22705000000214%22+fio%3D%22%D0%A8%D0%B8%D0%B1%D0%B0%D0%B5%D0%B2%D0%B0+%D0%9E%D0%BA%D1%81%D0%B0%D0%BD%D0%B0+%D0%92%D0%B8%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2%D0%BD%D0%B0%22+uid%3D%22%22%2F%3E%0A++++++++%3Cteacher_delete+teacher_id%3D%22705000000214%22+fio%3D%22%D0%A8%D0%B8%D0%B1%D0%B0%D0%B5%D0%B2%D0%B0+%D0%9E%D0%BA%D1%81%D0%B0%D0%BD%D0%B0+%D0%92%D0%B8%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2%D0%BD%D0%B0%22+uid%3D%22%22%2F%3E%0A++++++++%3Cteacher_delete+teacher_id%3D%22705000000214%22+fio%3D%22%D0%A8%D0%B8%D0%B1%D0%B0%D0%B5%D0%B2%D0%B0+%D0%9E%D0%BA%D1%81%D0%B0%D0%BD%D0%B0+%D0%92%D0%B8%D0%BA%D1%82%D0%BE%D1%80%D0%BE%D0%B2%D0%BD%D0%B0%22+uid%3D%22%22%2F%3E%0A++++%3C%2Fteachers%3E%0A++++%3Clast_marks%3E%0A++++++++%3Clast_mark+last_mark_id%3D%22705000111240%22%2F%3E%0A++++++++%3Clast_mark+last_mark_id%3D%22705000111240%22%2F%3E%0A++++++++%3Clast_mark_deleted+last_mark_id%3D%22705000111240%22%2F%3E%0A++++++++%3Clast_mark_deleted+last_mark_id%3D%22705000144740%22%2F%3E%0A++++++++%3Clast_mark_deleted+last_mark_id%3D%22705000200530%22%2F%3E%0A++++%3C%2Flast_marks%3E%0A%3C%2Fdatapacket%3E'
   24     9*       NEW                                              $13     'XMLReader'
         10*       DO_FCALL                                      0          
         11*       ASSIGN                                                   !1, $13
   25    12*       INIT_METHOD_CALL                                         !1, 'xml'
         13*       SEND_VAR_EX                                              !0
         14*       DO_FCALL                                      0  $16     
         15*       JMPZ                                                     $16, ->23
   26    16*       INIT_FCALL                                               'var_dump'
         17*       INIT_METHOD_CALL                                         !1, 'readString'
         18*       DO_FCALL                                      0  $17     
         19*       SEND_VAR                                                 $17
         20*       DO_ICALL                                                 
         21*       EXIT                                                     
         22*       JMP                                                      ->27
   28    23*       NEW                                              $19     'Exeption'
         24*       SEND_VAL_EX                                              '%D0%9E%D1%88%D0%B8%D0%B1%D0%BA%D0%B0+%D0%BF%D1%80%D0%B8+%D1%80%D0%B0%D0%B7%D0%B1%D0%BE%D1%80%D0%B5+XML'
         25*       DO_FCALL                                      0          
         26*       THROW                                         0          $19
   36    27*       INIT_FCALL                                               'var_dump'
         28*       SEND_VAR                                                 !2
         29*       DO_ICALL                                                 
   42    30*       EXIT                                                     
   55    31*       INIT_FCALL                                               'simplexml_load_string'
         32*       SEND_VAR                                                 !3
         33*       DO_ICALL                                         $22     
         34*       ASSIGN                                                   !2, $22
   58    35*       INIT_METHOD_CALL                                         !2, 'children'
         36*       DO_FCALL                                      0  $24     
         37*       INIT_METHOD_CALL                                         $24, 'children'
         38*       DO_FCALL                                      0  $25     
         39*       FE_RESET_R                                       $26     $25, ->58
         40*       FE_FETCH_R                                       ~27     $26, !4, ->58
         41*       ASSIGN                                                   !5, ~27
   59    42*       INIT_FCALL                                               'var_dump'
         43*       SEND_VAR                                                 !4
         44*       DO_ICALL                                                 
   60    45*       INIT_METHOD_CALL                                         !4, 'attributes'
         46*       DO_FCALL                                      0  $30     
         47*       ASSIGN                                                   !4, $30
   61    48*       INIT_FCALL                                               'var_dump'
         49*       SEND_VAR                                                 !4
         50*       DO_ICALL                                                 
   62    51*       FETCH_DIM_R                                      ~33     !4, '%40attributes'
         52*       ASSIGN                                                   !4, ~33
   64    53*       INIT_FCALL                                               'var_dump'
         54*       SEND_VAR                                                 !4
         55*       DO_ICALL                                                 
   65    56*       EXIT                                                     
   58    57*       JMP                                                      ->40
         58*       FE_FREE                                                  $26
   67    59*       EXIT                                                     
   68    60*       NEW                                              $36     'SimpleXMLElement'
         61*       SEND_VAR_EX                                              !3
         62*       DO_FCALL                                      0          
         63*       ASSIGN                                                   !2, $36
   71    64*       INIT_METHOD_CALL                                         !2, 'xpath'
         65*       SEND_VAL_EX                                              'teachers'
         66*       DO_FCALL                                      0  $39     
         67*       ASSIGN                                                   !6, $39
   73    68*       INIT_FCALL                                               'var_dump'
         69*       SEND_VAR                                                 !6
         70*       DO_ICALL                                                 
   74    71*       EXIT                                                     
   76    72*       JMP                                                      ->76
   77    73*       ECHO                                                     '%2Fteachers%3A+'
         74*       ECHO                                                     !7
         75*       ECHO                                                     '%0A'
   76    76*       INIT_FCALL_BY_NAME                                       'each'
         77*       SEND_VAR_EX                                              !6
         78*       DO_FCALL                                      0  $42     
         79*       FETCH_LIST_R                                     $43     $42, 1
         80*       ASSIGN                                                   !7, $43
         81*       JMPNZ                                                    $42, ->73
   81    82*       INIT_METHOD_CALL                                         !2, 'xpath'
         83*       SEND_VAL_EX                                              'b%2Fc'
         84*       DO_FCALL                                      0  $45     
         85*       ASSIGN                                                   !6, $45
   83    86*       JMP                                                      ->90
   84    87*       ECHO                                                     'b%2Fc%3A+'
         88*       ECHO                                                     !7
         89*       ECHO                                                     '%0A'
   83    90*       INIT_FCALL_BY_NAME                                       'each'
         91*       SEND_VAR_EX                                              !6
         92*       DO_FCALL                                      0  $47     
         93*       FETCH_LIST_R                                     $48     $47, 1
         94*       ASSIGN                                                   !7, $48
         95*       JMPNZ                                                    $47, ->87
   90    96*     > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
186.49 ms | 1396 KiB | 17 Q