3v4l.org

run code in 300+ PHP versions simultaneously
<?php function unvar_dump($str) { if (strpos($str, "\n") === false) { //Add new lines: $regex = array( '#(\\[.*?\\]=>)#', '#(string\\(|int\\(|float\\(|array\\(|NULL|object\\(|})#', ); $str = preg_replace($regex, "\n\\1", $str); $str = trim($str); } $regex = array( '#^\\040*NULL\\040*$#m', '#^\\s*array\\((.*?)\\)\\s*{\\s*$#m', '#^\\s*string\\((.*?)\\)\\s*(.*?)$#m', '#^\\s*int\\((.*?)\\)\\s*$#m', '#^\\s*bool\\(true\\)\\s*$#m', '#^\\s*bool\\(false\\)\\s*$#m', '#^\\s*float\\((.*?)\\)\\s*$#m', '#^\\s*\[(\\d+)\\]\\s*=>\\s*$#m', '#\\s*?\\r?\\n\\s*#m', ); $replace = array( 'N', 'a:\\1:{', 's:\\1:\\2', 'i:\\1', 'b:1', 'b:0', 'd:\\1', 'i:\\1', ';' ); $serialized = preg_replace($regex, $replace, $str); $func = create_function( '$match', 'return "s:".strlen($match[1]).":\\"".$match[1]."\\"";' ); $serialized = preg_replace_callback( '#\\s*\\["(.*?)"\\]\\s*=>#', $func, $serialized ); $func = create_function( '$match', 'return "O:".strlen($match[1]).":\\"".$match[1]."\\":".$match[2].":{";' ); $serialized = preg_replace_callback( '#object\\((.*?)\\).*?\\((\\d+)\\)\\s*{\\s*;#', $func, $serialized ); $serialized = preg_replace( array('#};#', '#{;#'), array('}', '{'), $serialized ); return unserialize($serialized); } $vardump = 'array(2) { [0]=> array(4) { ["username"]=> string(3) "Ann" ["email"]=> string(15) "ann89@gmail.com" ["first_name"]=> string(3) "Ann" ["last_name"]=> string(5) "Quike" } [1]=> array(4) { ["username"]=> string(7) "Stephan" ["email"]=> string(15) "steve@gmail.com" ["first_name"]=> string(7) "Stephan" ["last_name"]=> string(4) "Qoin" } }'; $result = unvar_dump($vardump); var_dump($result[0]); var_dump($result[1]);
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/uJeEW
function name:  (null)
number of ops:  14
compiled vars:  !0 = $vardump, !1 = $result
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   63     0  E >   ASSIGN                                                   !0, 'array%282%29+%7B%0A%5B0%5D%3D%3E%0Aarray%284%29+%7B%0A%5B%22username%22%5D%3D%3E%0Astring%283%29+%22Ann%22%0A%5B%22email%22%5D%3D%3E%0Astring%2815%29+%22ann89%40gmail.com%22%0A%5B%22first_name%22%5D%3D%3E%0Astring%283%29+%22Ann%22%0A%5B%22last_name%22%5D%3D%3E%0Astring%285%29+%22Quike%22%0A%7D%0A%5B1%5D%3D%3E%0Aarray%284%29+%7B%0A%5B%22username%22%5D%3D%3E%0Astring%287%29+%22Stephan%22%0A%5B%22email%22%5D%3D%3E%0Astring%2815%29+%22steve%40gmail.com%22%0A%5B%22first_name%22%5D%3D%3E%0Astring%287%29+%22Stephan%22%0A%5B%22last_name%22%5D%3D%3E%0Astring%284%29+%22Qoin%22%0A%7D%0A%7D'
   88     1        INIT_FCALL                                               'unvar_dump'
          2        SEND_VAR                                                 !0
          3        DO_FCALL                                      0  $3      
          4        ASSIGN                                                   !1, $3
   90     5        INIT_FCALL                                               'var_dump'
          6        FETCH_DIM_R                                      ~5      !1, 0
          7        SEND_VAL                                                 ~5
          8        DO_ICALL                                                 
   91     9        INIT_FCALL                                               'var_dump'
         10        FETCH_DIM_R                                      ~7      !1, 1
         11        SEND_VAL                                                 ~7
         12        DO_ICALL                                                 
         13      > RETURN                                                   1

Function unvar_dump:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 7, Position 2 = 18
Branch analysis from position: 7
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 18
filename:       /in/uJeEW
function name:  unvar_dump
number of ops:  59
compiled vars:  !0 = $str, !1 = $regex, !2 = $replace, !3 = $serialized, !4 = $func
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
    4     1        INIT_FCALL                                               'strpos'
          2        SEND_VAR                                                 !0
          3        SEND_VAL                                                 '%0A'
          4        DO_ICALL                                         $5      
          5        TYPE_CHECK                                    4          $5
          6      > JMPZ                                                     ~6, ->18
    6     7    >   ASSIGN                                                   !1, <array>
   10     8        INIT_FCALL                                               'preg_replace'
          9        SEND_VAR                                                 !1
         10        SEND_VAL                                                 '%0A%5C1'
         11        SEND_VAR                                                 !0
         12        DO_ICALL                                         $8      
         13        ASSIGN                                                   !0, $8
   11    14        INIT_FCALL                                               'trim'
         15        SEND_VAR                                                 !0
         16        DO_ICALL                                         $10     
         17        ASSIGN                                                   !0, $10
   13    18    >   ASSIGN                                                   !1, <array>
   24    19        ASSIGN                                                   !2, <array>
   35    20        INIT_FCALL                                               'preg_replace'
         21        SEND_VAR                                                 !1
         22        SEND_VAR                                                 !2
         23        SEND_VAR                                                 !0
         24        DO_ICALL                                         $14     
         25        ASSIGN                                                   !3, $14
   36    26        INIT_FCALL_BY_NAME                                       'create_function'
   37    27        SEND_VAL_EX                                              '%24match'
   38    28        SEND_VAL_EX                                              'return+%22s%3A%22.strlen%28%24match%5B1%5D%29.%22%3A%5C%22%22.%24match%5B1%5D.%22%5C%22%22%3B'
         29        DO_FCALL                                      0  $16     
   36    30        ASSIGN                                                   !4, $16
   40    31        INIT_FCALL                                               'preg_replace_callback'
   41    32        SEND_VAL                                                 '%23%5Cs%2A%5C%5B%22%28.%2A%3F%29%22%5C%5D%5Cs%2A%3D%3E%23'
   42    33        SEND_VAR                                                 !4
   43    34        SEND_VAR                                                 !3
         35        DO_ICALL                                         $18     
   40    36        ASSIGN                                                   !3, $18
   45    37        INIT_FCALL_BY_NAME                                       'create_function'
   46    38        SEND_VAL_EX                                              '%24match'
   47    39        SEND_VAL_EX                                              'return+%22O%3A%22.strlen%28%24match%5B1%5D%29.%22%3A%5C%22%22.%24match%5B1%5D.%22%5C%22%3A%22.%24match%5B2%5D.%22%3A%7B%22%3B'
         40        DO_FCALL                                      0  $20     
   45    41        ASSIGN                                                   !4, $20
   49    42        INIT_FCALL                                               'preg_replace_callback'
   50    43        SEND_VAL                                                 '%23object%5C%28%28.%2A%3F%29%5C%29.%2A%3F%5C%28%28%5Cd%2B%29%5C%29%5Cs%2A%7B%5Cs%2A%3B%23'
   51    44        SEND_VAR                                                 !4
   52    45        SEND_VAR                                                 !3
         46        DO_ICALL                                         $22     
   49    47        ASSIGN                                                   !3, $22
   54    48        INIT_FCALL                                               'preg_replace'
   55    49        SEND_VAL                                                 <array>
   56    50        SEND_VAL                                                 <array>
   57    51        SEND_VAR                                                 !3
         52        DO_ICALL                                         $24     
   54    53        ASSIGN                                                   !3, $24
   60    54        INIT_FCALL                                               'unserialize'
         55        SEND_VAR                                                 !3
         56        DO_ICALL                                         $26     
         57      > RETURN                                                   $26
   61    58*     > RETURN                                                   null

End of function unvar_dump

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
149.05 ms | 1403 KiB | 26 Q