3v4l.org

run code in 300+ PHP versions simultaneously
<?php $htmlString = <<<HTML <div class="singlepost"> <ul class="linha_status" style=""> <li>Status: <b>Objeto em trânsito - por favor aguarde</b></li> <li>Data : 24/10/2021 | Hora: 12:04</li> <li>Origem: Unidade de Tratamento - Jaboatao Dos Guararapes / PE</li> <li>Destino: Agência dos Correios - Cuitegi / PB</li> </ul> <ul class="linha_status" style=""> <li>Status: <b>Objeto em trânsito - por favor aguarde</b></li> <li>Data : 19/10/2021 | Hora: 00:03</li> <li>Origem: Unidade de Logística Integrada - Curitiba / PR</li> <li>Destino: Unidade de Tratamento - Recife / PE</li> </ul> <ul class="linha_status" style=""> <li>Status: <b>Fiscalização aduaneira finalizada</b></li> <li>Data : 18/10/2021 | Hora: 23:35</li> <li>Local: Unidade Operacional - Curitiba / PR</li> </ul> <ul class="linha_status" style=""> <li>Status: <b>Objeto recebido pelos Correios do Brasil</b></li> <li>Data : 16/10/2021 | Hora: 11:45</li> <li>Local: Unidade de Logística Integrada - Curitiba / PR</li> </ul> <ul class="linha_status" style=""> <li>Status: <b>Objeto postado</b></li> <li>Data : 14/10/2021 | Hora: 20:30</li> <li>Local: País - / </li> </ul> </div> HTML; $result = []; $doc = new DOMDocument; $doc->loadHTML('<?xml encoding="UTF-8">' . $htmlString); $xpath = new DOMXPath($doc); foreach ($xpath->query('//ul[@class="linha_status"]') as $i => $ul) { foreach ($xpath->query('li', $ul) as $li) { foreach (explode("|", $li->nodeValue) as $segment) { [$key, $result[$i][$key]] = preg_split('/\s*:\s*/', trim($segment), 2); } } } var_export($result);
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 17, Position 2 = 52
Branch analysis from position: 17
2 jumps found. (Code = 78) Position 1 = 18, Position 2 = 52
Branch analysis from position: 18
2 jumps found. (Code = 77) Position 1 = 24, Position 2 = 50
Branch analysis from position: 24
2 jumps found. (Code = 78) Position 1 = 25, Position 2 = 50
Branch analysis from position: 25
2 jumps found. (Code = 77) Position 1 = 31, Position 2 = 48
Branch analysis from position: 31
2 jumps found. (Code = 78) Position 1 = 32, Position 2 = 48
Branch analysis from position: 32
1 jumps found. (Code = 42) Position 1 = 31
Branch analysis from position: 31
Branch analysis from position: 48
1 jumps found. (Code = 42) Position 1 = 24
Branch analysis from position: 24
Branch analysis from position: 48
Branch analysis from position: 50
1 jumps found. (Code = 42) Position 1 = 17
Branch analysis from position: 17
Branch analysis from position: 50
Branch analysis from position: 52
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 52
filename:       /in/D0Ppi
function name:  (null)
number of ops:  57
compiled vars:  !0 = $htmlString, !1 = $result, !2 = $doc, !3 = $xpath, !4 = $ul, !5 = $i, !6 = $li, !7 = $segment, !8 = $key
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, '%3Cdiv+class%3D%22singlepost%22%3E%0A%09%0A%3Cul+class%3D%22linha_status%22+style%3D%22%22%3E%0A%3Cli%3EStatus%3A+%3Cb%3EObjeto+em+tr%C3%A2nsito+-+por+favor+aguarde%3C%2Fb%3E%3C%2Fli%3E%0A%3Cli%3EData++%3A+24%2F10%2F2021+%7C+Hora%3A+12%3A04%3C%2Fli%3E%09%09%09%0A%3Cli%3EOrigem%3A+Unidade+de+Tratamento+-+Jaboatao+Dos+Guararapes+%2F+PE%3C%2Fli%3E%0A%3Cli%3EDestino%3A+Ag%C3%AAncia+dos+Correios+-+Cuitegi+%2F+PB%3C%2Fli%3E%0A%3C%2Ful%3E%0A%0A%3Cul+class%3D%22linha_status%22+style%3D%22%22%3E%0A%3Cli%3EStatus%3A+%3Cb%3EObjeto+em+tr%C3%A2nsito+-+por+favor+aguarde%3C%2Fb%3E%3C%2Fli%3E%0A%3Cli%3EData++%3A+19%2F10%2F2021+%7C+Hora%3A+00%3A03%3C%2Fli%3E%09%09%09%0A%3Cli%3EOrigem%3A+Unidade+de+Log%C3%ADstica+Integrada+-+Curitiba+%2F+PR%3C%2Fli%3E%0A%3Cli%3EDestino%3A+Unidade+de+Tratamento+-+Recife+%2F+PE%3C%2Fli%3E%0A%3C%2Ful%3E%0A%0A%3Cul+class%3D%22linha_status%22+style%3D%22%22%3E%0A%3Cli%3EStatus%3A+%3Cb%3EFiscaliza%C3%A7%C3%A3o+aduaneira+finalizada%3C%2Fb%3E%3C%2Fli%3E%0A%3Cli%3EData++%3A+18%2F10%2F2021+%7C+Hora%3A+23%3A35%3C%2Fli%3E%0A%3Cli%3ELocal%3A+Unidade+Operacional+-+Curitiba+%2F+PR%3C%2Fli%3E%0A%3C%2Ful%3E%0A%0A%3Cul+class%3D%22linha_status%22+style%3D%22%22%3E%0A%3Cli%3EStatus%3A+%3Cb%3EObjeto+recebido+pelos+Correios+do+Brasil%3C%2Fb%3E%3C%2Fli%3E%0A%3Cli%3EData++%3A+16%2F10%2F2021+%7C+Hora%3A+11%3A45%3C%2Fli%3E%0A%3Cli%3ELocal%3A+Unidade+de+Log%C3%ADstica+Integrada+-+Curitiba+%2F+PR%3C%2Fli%3E%0A%3C%2Ful%3E%0A%0A%3Cul+class%3D%22linha_status%22+style%3D%22%22%3E%0A%3Cli%3EStatus%3A+%3Cb%3EObjeto+postado%3C%2Fb%3E%3C%2Fli%3E%0A%3Cli%3EData++%3A+14%2F10%2F2021+%7C+Hora%3A+20%3A30%3C%2Fli%3E%0A%3Cli%3ELocal%3A+Pa%C3%ADs+-++%2F+%3C%2Fli%3E%0A%3C%2Ful%3E%0A%0A%3C%2Fdiv%3E'
   41     1        ASSIGN                                                   !1, <array>
   43     2        NEW                                              $11     'DOMDocument'
          3        DO_FCALL                                      0          
          4        ASSIGN                                                   !2, $11
   44     5        INIT_METHOD_CALL                                         !2, 'loadHTML'
          6        CONCAT                                           ~14     '%3C%3Fxml+encoding%3D%22UTF-8%22%3E', !0
          7        SEND_VAL_EX                                              ~14
          8        DO_FCALL                                      0          
   45     9        NEW                                              $16     'DOMXPath'
         10        SEND_VAR_EX                                              !2
         11        DO_FCALL                                      0          
         12        ASSIGN                                                   !3, $16
   46    13        INIT_METHOD_CALL                                         !3, 'query'
         14        SEND_VAL_EX                                              '%2F%2Ful%5B%40class%3D%22linha_status%22%5D'
         15        DO_FCALL                                      0  $19     
         16      > FE_RESET_R                                       $20     $19, ->52
         17    > > FE_FETCH_R                                       ~21     $20, !4, ->52
         18    >   ASSIGN                                                   !5, ~21
   47    19        INIT_METHOD_CALL                                         !3, 'query'
         20        SEND_VAL_EX                                              'li'
         21        SEND_VAR_EX                                              !4
         22        DO_FCALL                                      0  $23     
         23      > FE_RESET_R                                       $24     $23, ->50
         24    > > FE_FETCH_R                                               $24, !6, ->50
   48    25    >   INIT_FCALL                                               'explode'
         26        SEND_VAL                                                 '%7C'
         27        FETCH_OBJ_R                                      ~25     !6, 'nodeValue'
         28        SEND_VAL                                                 ~25
         29        DO_ICALL                                         $26     
         30      > FE_RESET_R                                       $27     $26, ->48
         31    > > FE_FETCH_R                                               $27, !7, ->48
   49    32    >   INIT_FCALL                                               'preg_split'
         33        SEND_VAL                                                 '%2F%5Cs%2A%3A%5Cs%2A%2F'
         34        INIT_FCALL                                               'trim'
         35        SEND_VAR                                                 !7
         36        DO_ICALL                                         $28     
         37        SEND_VAR                                                 $28
         38        SEND_VAL                                                 2
         39        DO_ICALL                                         $29     
         40        FETCH_LIST_R                                     $30     $29, 0
         41        ASSIGN                                                   !8, $30
         42        FETCH_LIST_R                                     $32     $29, 1
         43        FETCH_DIM_W                                      $33     !1, !5
         44        ASSIGN_DIM                                               $33, !8
         45        OP_DATA                                                  $32
         46        FREE                                                     $29
   48    47      > JMP                                                      ->31
         48    >   FE_FREE                                                  $27
   47    49      > JMP                                                      ->24
         50    >   FE_FREE                                                  $24
   46    51      > JMP                                                      ->17
         52    >   FE_FREE                                                  $20
   53    53        INIT_FCALL                                               'var_export'
         54        SEND_VAR                                                 !1
         55        DO_ICALL                                                 
         56      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
154.64 ms | 1018 KiB | 17 Q