3v4l.org

run code in 300+ PHP versions simultaneously
<?php function AttrFromString($string) { preg_match_all('/(\S+)=["\']?((?:.(?!["\']?\s+(?:\S+)=|[>"\']))+.)["\']?/', $string, $matches); var_dump($matches); $items = explode(" ", $string); $newlist = array(); foreach($items as $yes) { if (strpos($yes, "=")!==false) { $as = explode('=', $yes); } else { $as[0] = $yes; $as[1] = ""; } if (substr($as[1], 0,1) == "'" || substr($as[1], 0,1) == '"') { $as[1] = substr($as[1],1,strlen($as[1])-2); } } } AttrFromString("test=hallo tes2=\"doei\" test3='lol' nope ja");
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/TiePQ
function name:  (null)
number of ops:  4
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   20     0  E >   INIT_FCALL                                               'attrfromstring'
          1        SEND_VAL                                                 'test%3Dhallo+tes2%3D%22doei%22+test3%3D%27lol%27+nope+ja'
          2        DO_FCALL                                      0          
          3      > RETURN                                                   1

Function attrfromstring:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 16, Position 2 = 62
Branch analysis from position: 16
2 jumps found. (Code = 78) Position 1 = 17, Position 2 = 62
Branch analysis from position: 17
2 jumps found. (Code = 43) Position 1 = 23, Position 2 = 29
Branch analysis from position: 23
1 jumps found. (Code = 42) Position 1 = 33
Branch analysis from position: 33
2 jumps found. (Code = 47) Position 1 = 41, Position 2 = 49
Branch analysis from position: 41
2 jumps found. (Code = 43) Position 1 = 50, Position 2 = 61
Branch analysis from position: 50
1 jumps found. (Code = 42) Position 1 = 16
Branch analysis from position: 16
Branch analysis from position: 61
Branch analysis from position: 49
Branch analysis from position: 29
2 jumps found. (Code = 47) Position 1 = 41, Position 2 = 49
Branch analysis from position: 41
Branch analysis from position: 49
Branch analysis from position: 62
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 62
filename:       /in/TiePQ
function name:  AttrFromString
number of ops:  64
compiled vars:  !0 = $string, !1 = $matches, !2 = $items, !3 = $newlist, !4 = $yes, !5 = $as
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   RECV                                             !0      
    3     1        INIT_FCALL                                               'preg_match_all'
          2        SEND_VAL                                                 '%2F%28%5CS%2B%29%3D%5B%22%27%5D%3F%28%28%3F%3A.%28%3F%21%5B%22%27%5D%3F%5Cs%2B%28%3F%3A%5CS%2B%29%3D%7C%5B%3E%22%27%5D%29%29%2B.%29%5B%22%27%5D%3F%2F'
          3        SEND_VAR                                                 !0
          4        SEND_REF                                                 !1
          5        DO_ICALL                                                 
    4     6        INIT_FCALL                                               'var_dump'
          7        SEND_VAR                                                 !1
          8        DO_ICALL                                                 
    5     9        INIT_FCALL                                               'explode'
         10        SEND_VAL                                                 '+'
         11        SEND_VAR                                                 !0
         12        DO_ICALL                                         $8      
         13        ASSIGN                                                   !2, $8
    6    14        ASSIGN                                                   !3, <array>
    7    15      > FE_RESET_R                                       $11     !2, ->62
         16    > > FE_FETCH_R                                               $11, !4, ->62
    8    17    >   INIT_FCALL                                               'strpos'
         18        SEND_VAR                                                 !4
         19        SEND_VAL                                                 '%3D'
         20        DO_ICALL                                         $12     
         21        TYPE_CHECK                                  1018          $12
         22      > JMPZ                                                     ~13, ->29
    9    23    >   INIT_FCALL                                               'explode'
         24        SEND_VAL                                                 '%3D'
         25        SEND_VAR                                                 !4
         26        DO_ICALL                                         $14     
         27        ASSIGN                                                   !5, $14
         28      > JMP                                                      ->33
   12    29    >   ASSIGN_DIM                                               !5, 0
         30        OP_DATA                                                  !4
   13    31        ASSIGN_DIM                                               !5, 1
         32        OP_DATA                                                  ''
   15    33    >   INIT_FCALL                                               'substr'
         34        FETCH_DIM_R                                      ~18     !5, 1
         35        SEND_VAL                                                 ~18
         36        SEND_VAL                                                 0
         37        SEND_VAL                                                 1
         38        DO_ICALL                                         $19     
         39        IS_EQUAL                                         ~20     $19, '%27'
         40      > JMPNZ_EX                                         ~20     ~20, ->49
         41    >   INIT_FCALL                                               'substr'
         42        FETCH_DIM_R                                      ~21     !5, 1
         43        SEND_VAL                                                 ~21
         44        SEND_VAL                                                 0
         45        SEND_VAL                                                 1
         46        DO_ICALL                                         $22     
         47        IS_EQUAL                                         ~23     $22, '%22'
         48        BOOL                                             ~20     ~23
         49    > > JMPZ                                                     ~20, ->61
   16    50    >   INIT_FCALL                                               'substr'
         51        FETCH_DIM_R                                      ~25     !5, 1
         52        SEND_VAL                                                 ~25
         53        SEND_VAL                                                 1
         54        FETCH_DIM_R                                      ~26     !5, 1
         55        STRLEN                                           ~27     ~26
         56        SUB                                              ~28     ~27, 2
         57        SEND_VAL                                                 ~28
         58        DO_ICALL                                         $29     
         59        ASSIGN_DIM                                               !5, 1
         60        OP_DATA                                                  $29
    7    61    > > JMP                                                      ->16
         62    >   FE_FREE                                                  $11
   19    63      > RETURN                                                   null

End of function attrfromstring

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
154.16 ms | 1394 KiB | 24 Q