3v4l.org

run code in 300+ PHP versions simultaneously
<?php ob_start(function ($str) { ini_set('pcre.jit', '0'); return preg_replace_callback('~(.)\1{2}\K\1{27,}(?=\1{3})~', fn ($m) => '...' . (strlen($m[0]) + 6) . '*...', $str); }); $str = str_repeat('x', 65_540); $str2 = 'y' . $str; $expectedRes = [['v' => $str], ['v' => $str2]]; echo "expected:\n"; print_r($expectedRes); $sql = 'select v from ( select ? v union all select ? v ) t'; $mysqli = new \mysqli('localhost', 'atk4_test', 'XXXXX', 'atk4_test__data'); $stmt = $mysqli->prepare($sql); $stmt->bind_param('ss', $str, $str2); $stmt->execute(); $result = $stmt->get_result(); $row = $result->fetch_all(\MYSQLI_ASSOC); echo "\nactual using mysqli driver:\n"; print_r($row); var_dump($row === $expectedRes); // reproduce the same with pdo_mysql driver $pdo = new \PDO('mysql:host=127.0.0.1;dbname=atk4_test__data', 'atk4_test', 'XXXXX'); $stmt = $pdo->prepare($sql); $stmt->bindValue(1, $str); $stmt->bindValue(2, $str); $stmt->execute(); $res = $stmt->fetchAll(\PDO::FETCH_ASSOC); echo "\nactual using PDO driver:\n"; print_r($row); var_dump($row === $expectedRes);
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2IHsS
function name:  (null)
number of ops:  88
compiled vars:  !0 = $str, !1 = $str2, !2 = $expectedRes, !3 = $sql, !4 = $mysqli, !5 = $stmt, !6 = $result, !7 = $row, !8 = $pdo, !9 = $res
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   INIT_FCALL                                               'ob_start'
          1        DECLARE_LAMBDA_FUNCTION                          ~10     [0]
    7     2        SEND_VAL                                                 ~10
    3     3        DO_ICALL                                                 
    9     4        INIT_FCALL                                               'str_repeat'
          5        SEND_VAL                                                 'x'
          6        SEND_VAL                                                 65540
          7        DO_ICALL                                         $12     
          8        ASSIGN                                                   !0, $12
   10     9        CONCAT                                           ~14     'y', !0
         10        ASSIGN                                                   !1, ~14
   12    11        INIT_ARRAY                                       ~16     !0, 'v'
         12        INIT_ARRAY                                       ~17     ~16
         13        INIT_ARRAY                                       ~18     !1, 'v'
         14        ADD_ARRAY_ELEMENT                                ~17     ~18
         15        ASSIGN                                                   !2, ~17
   13    16        ECHO                                                     'expected%3A%0A'
   14    17        INIT_FCALL                                               'print_r'
         18        SEND_VAR                                                 !2
         19        DO_ICALL                                                 
   16    20        ASSIGN                                                   !3, 'select+v%0Afrom+%28%0A++select+%3F+v%0A++union+all%0A++select+%3F+v%0A%29+t'
   23    21        NEW                                              $22     'mysqli'
         22        SEND_VAL_EX                                              'localhost'
         23        SEND_VAL_EX                                              'atk4_test'
         24        SEND_VAL_EX                                              'XXXXX'
         25        SEND_VAL_EX                                              'atk4_test__data'
         26        DO_FCALL                                      0          
         27        ASSIGN                                                   !4, $22
   25    28        INIT_METHOD_CALL                                         !4, 'prepare'
         29        SEND_VAR_EX                                              !3
         30        DO_FCALL                                      0  $25     
         31        ASSIGN                                                   !5, $25
   26    32        INIT_METHOD_CALL                                         !5, 'bind_param'
         33        SEND_VAL_EX                                              'ss'
         34        SEND_VAR_EX                                              !0
         35        SEND_VAR_EX                                              !1
         36        DO_FCALL                                      0          
   27    37        INIT_METHOD_CALL                                         !5, 'execute'
         38        DO_FCALL                                      0          
   29    39        INIT_METHOD_CALL                                         !5, 'get_result'
         40        DO_FCALL                                      0  $29     
         41        ASSIGN                                                   !6, $29
   30    42        INIT_METHOD_CALL                                         !6, 'fetch_all'
         43        FETCH_CONSTANT                                   ~31     'MYSQLI_ASSOC'
         44        SEND_VAL_EX                                              ~31
         45        DO_FCALL                                      0  $32     
         46        ASSIGN                                                   !7, $32
   31    47        ECHO                                                     '%0Aactual+using+mysqli+driver%3A%0A'
   32    48        INIT_FCALL                                               'print_r'
         49        SEND_VAR                                                 !7
         50        DO_ICALL                                                 
   33    51        INIT_FCALL                                               'var_dump'
         52        IS_IDENTICAL                                     ~35     !7, !2
         53        SEND_VAL                                                 ~35
         54        DO_ICALL                                                 
   36    55        NEW                                              $37     'PDO'
         56        SEND_VAL_EX                                              'mysql%3Ahost%3D127.0.0.1%3Bdbname%3Datk4_test__data'
         57        SEND_VAL_EX                                              'atk4_test'
         58        SEND_VAL_EX                                              'XXXXX'
         59        DO_FCALL                                      0          
         60        ASSIGN                                                   !8, $37
   38    61        INIT_METHOD_CALL                                         !8, 'prepare'
         62        SEND_VAR_EX                                              !3
         63        DO_FCALL                                      0  $40     
         64        ASSIGN                                                   !5, $40
   39    65        INIT_METHOD_CALL                                         !5, 'bindValue'
         66        SEND_VAL_EX                                              1
         67        SEND_VAR_EX                                              !0
         68        DO_FCALL                                      0          
   40    69        INIT_METHOD_CALL                                         !5, 'bindValue'
         70        SEND_VAL_EX                                              2
         71        SEND_VAR_EX                                              !0
         72        DO_FCALL                                      0          
   41    73        INIT_METHOD_CALL                                         !5, 'execute'
         74        DO_FCALL                                      0          
   43    75        INIT_METHOD_CALL                                         !5, 'fetchAll'
         76        SEND_VAL_EX                                              2
         77        DO_FCALL                                      0  $45     
         78        ASSIGN                                                   !9, $45
   44    79        ECHO                                                     '%0Aactual+using+PDO+driver%3A%0A'
   45    80        INIT_FCALL                                               'print_r'
         81        SEND_VAR                                                 !7
         82        DO_ICALL                                                 
   46    83        INIT_FCALL                                               'var_dump'
         84        IS_IDENTICAL                                     ~48     !7, !2
         85        SEND_VAL                                                 ~48
         86        DO_ICALL                                                 
         87      > RETURN                                                   1


Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2IHsS
function name:  {closure}
number of ops:  13
compiled vars:  !0 = $str
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
    4     1        INIT_FCALL                                               'ini_set'
          2        SEND_VAL                                                 'pcre.jit'
          3        SEND_VAL                                                 '0'
          4        DO_ICALL                                                 
    6     5        INIT_FCALL                                               'preg_replace_callback'
          6        SEND_VAL                                                 '%7E%28.%29%5C1%7B2%7D%5CK%5C1%7B27%2C%7D%28%3F%3D%5C1%7B3%7D%29%7E'
          7        DECLARE_LAMBDA_FUNCTION                          ~2      [0]
          8        SEND_VAL                                                 ~2
          9        SEND_VAR                                                 !0
         10        DO_ICALL                                         $3      
         11      > RETURN                                                   $3
    7    12*     > RETURN                                                   null


Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/2IHsS
function name:  {closure}
number of ops:  8
compiled vars:  !0 = $m
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    6     0  E >   RECV                                             !0      
          1        FETCH_DIM_R                                      ~1      !0, 0
          2        STRLEN                                           ~2      ~1
          3        ADD                                              ~3      ~2, 6
          4        CONCAT                                           ~4      '...', ~3
          5        CONCAT                                           ~5      ~4, '%2A...'
          6      > RETURN                                                   ~5
          7*     > RETURN                                                   null

End of Dynamic Function 0

End of Dynamic Function 0

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
145.99 ms | 1019 KiB | 19 Q