3v4l.org

run code in 500+ 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:/in/2IHsS:3}
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:{closure:/in/2IHsS:3}:6}
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.5.0


preferences:
161.18 ms | 1503 KiB | 19 Q