3v4l.org

run code in 300+ PHP versions simultaneously
<?php echo date('Y-m-d H:i:s', strtotime("06-02-2014 24:00")); function mb_str_pad($str, $pad_len, $pad_str = ' ', $dir = STR_PAD_RIGHT, $encoding = NULL) { $encoding = $encoding === NULL ? mb_internal_encoding() : $encoding; $padBefore = $dir === STR_PAD_BOTH || $dir === STR_PAD_LEFT; $padAfter = $dir === STR_PAD_BOTH || $dir === STR_PAD_RIGHT; $pad_len -= mb_strlen($str, $encoding); $targetLen = $padBefore && $padAfter ? $pad_len / 2 : $pad_len; $strToRepeatLen = mb_strlen($pad_str, $encoding); $repeatTimes = ceil($targetLen / $strToRepeatLen); $repeatedString = str_repeat($pad_str, max(0, $repeatTimes)); // safe if used with valid utf-8 strings $before = $padBefore ? mb_substr($repeatedString, 0, floor($targetLen), $encoding) : ''; $after = $padAfter ? mb_substr($repeatedString, 0, ceil($targetLen), $encoding) : ''; return $before . $str . $after; } // same random testing... foreach([STR_PAD_BOTH, STR_PAD_LEFT, STR_PAD_RIGHT] as $padType) { echo str_pad("FOO", 11, "aeo", $padType) . "\n"; echo mb_str_pad("Féé", 11, "àèò", $padType, "UTF-8") . "\n"; echo str_pad("FOO", 10, "aeo", $padType) . "\n"; echo mb_str_pad("FOO", 10, "àèò", $padType, "UTF-8") . "\n"; echo str_pad("BAAZ", 11, "aeo", $padType) . "\n"; echo mb_str_pad("BAAZ", 11, "àèò", $padType, "UTF-8") . "\n"; echo str_pad("BAAZ", 10, "aeo", $padType) . "\n"; echo mb_str_pad("BAAZ", 10, "àèò", $padType, "UTF-8") . "\n"; echo str_pad("FOOBAR", 6, "aeo", $padType) . "\n"; echo mb_str_pad("FOOBAR", 6, "àèò", $padType, "UTF-8") . "\n"; echo str_pad("FOOBAR", 1, "aeo", $padType) . "\n"; echo mb_str_pad("FOOBAR", 1, "àèò", $padType, "UTF-8") . "\n"; echo str_pad("FOOBAR", 0, "aeo", $padType) . "\n"; echo mb_str_pad("FOOBAR", 0, "àèò", $padType, "UTF-8") . "\n"; echo str_pad("FOOBAR", -10, "aeo", $padType) . "\n"; echo mb_str_pad("FOOBAR", -10, "àèò", $padType, "UTF-8") . "\n"; echo "--\n"; } ?>
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 9, Position 2 = 148
Branch analysis from position: 9
2 jumps found. (Code = 78) Position 1 = 10, Position 2 = 148
Branch analysis from position: 10
1 jumps found. (Code = 42) Position 1 = 9
Branch analysis from position: 9
Branch analysis from position: 148
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 148
filename:       /in/3FoFf
function name:  (null)
number of ops:  150
compiled vars:  !0 = $padType
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   INIT_FCALL                                               'date'
          1        SEND_VAL                                                 'Y-m-d+H%3Ai%3As'
          2        INIT_FCALL                                               'strtotime'
          3        SEND_VAL                                                 '06-02-2014+24%3A00'
          4        DO_ICALL                                         $1      
          5        SEND_VAR                                                 $1
          6        DO_ICALL                                         $2      
          7        ECHO                                                     $2
   22     8      > FE_RESET_R                                       $3      <array>, ->148
          9    > > FE_FETCH_R                                               $3, !0, ->148
   24    10    >   INIT_FCALL                                               'str_pad'
         11        SEND_VAL                                                 'FOO'
         12        SEND_VAL                                                 11
         13        SEND_VAL                                                 'aeo'
         14        SEND_VAR                                                 !0
         15        DO_ICALL                                         $4      
         16        CONCAT                                           ~5      $4, '%0A'
         17        ECHO                                                     ~5
   25    18        INIT_FCALL                                               'mb_str_pad'
         19        SEND_VAL                                                 'F%C3%A9%C3%A9'
         20        SEND_VAL                                                 11
         21        SEND_VAL                                                 '%C3%A0%C3%A8%C3%B2'
         22        SEND_VAR                                                 !0
         23        SEND_VAL                                                 'UTF-8'
         24        DO_FCALL                                      0  $6      
         25        CONCAT                                           ~7      $6, '%0A'
         26        ECHO                                                     ~7
   26    27        INIT_FCALL                                               'str_pad'
         28        SEND_VAL                                                 'FOO'
         29        SEND_VAL                                                 10
         30        SEND_VAL                                                 'aeo'
         31        SEND_VAR                                                 !0
         32        DO_ICALL                                         $8      
         33        CONCAT                                           ~9      $8, '%0A'
         34        ECHO                                                     ~9
   27    35        INIT_FCALL                                               'mb_str_pad'
         36        SEND_VAL                                                 'FOO'
         37        SEND_VAL                                                 10
         38        SEND_VAL                                                 '%C3%A0%C3%A8%C3%B2'
         39        SEND_VAR                                                 !0
         40        SEND_VAL                                                 'UTF-8'
         41        DO_FCALL                                      0  $10     
         42        CONCAT                                           ~11     $10, '%0A'
         43        ECHO                                                     ~11
   28    44        INIT_FCALL                                               'str_pad'
         45        SEND_VAL                                                 'BAAZ'
         46        SEND_VAL                                                 11
         47        SEND_VAL                                                 'aeo'
         48        SEND_VAR                                                 !0
         49        DO_ICALL                                         $12     
         50        CONCAT                                           ~13     $12, '%0A'
         51        ECHO                                                     ~13
   29    52        INIT_FCALL                                               'mb_str_pad'
         53        SEND_VAL                                                 'BAAZ'
         54        SEND_VAL                                                 11
         55        SEND_VAL                                                 '%C3%A0%C3%A8%C3%B2'
         56        SEND_VAR                                                 !0
         57        SEND_VAL                                                 'UTF-8'
         58        DO_FCALL                                      0  $14     
         59        CONCAT                                           ~15     $14, '%0A'
         60        ECHO                                                     ~15
   30    61        INIT_FCALL                                               'str_pad'
         62        SEND_VAL                                                 'BAAZ'
         63        SEND_VAL                                                 10
         64        SEND_VAL                                                 'aeo'
         65        SEND_VAR                                                 !0
         66        DO_ICALL                                         $16     
         67        CONCAT                                           ~17     $16, '%0A'
         68        ECHO                                                     ~17
   31    69        INIT_FCALL                                               'mb_str_pad'
         70        SEND_VAL                                                 'BAAZ'
         71        SEND_VAL                                                 10
         72        SEND_VAL                                                 '%C3%A0%C3%A8%C3%B2'
         73        SEND_VAR                                                 !0
         74        SEND_VAL                                                 'UTF-8'
         75        DO_FCALL                                      0  $18     
         76        CONCAT                                           ~19     $18, '%0A'
         77        ECHO                                                     ~19
   32    78        INIT_FCALL                                               'str_pad'
         79        SEND_VAL                                                 'FOOBAR'
         80        SEND_VAL                                                 6
         81        SEND_VAL                                                 'aeo'
         82        SEND_VAR                                                 !0
         83        DO_ICALL                                         $20     
         84        CONCAT                                           ~21     $20, '%0A'
         85        ECHO                                                     ~21
   33    86        INIT_FCALL                                               'mb_str_pad'
         87        SEND_VAL                                                 'FOOBAR'
         88        SEND_VAL                                                 6
         89        SEND_VAL                                                 '%C3%A0%C3%A8%C3%B2'
         90        SEND_VAR                                                 !0
         91        SEND_VAL                                                 'UTF-8'
         92        DO_FCALL                                      0  $22     
         93        CONCAT                                           ~23     $22, '%0A'
         94        ECHO                                                     ~23
   34    95        INIT_FCALL                                               'str_pad'
         96        SEND_VAL                                                 'FOOBAR'
         97        SEND_VAL                                                 1
         98        SEND_VAL                                                 'aeo'
         99        SEND_VAR                                                 !0
        100        DO_ICALL                                         $24     
        101        CONCAT                                           ~25     $24, '%0A'
        102        ECHO                                                     ~25
   35   103        INIT_FCALL                                               'mb_str_pad'
        104        SEND_VAL                                                 'FOOBAR'
        105        SEND_VAL                                                 1
        106        SEND_VAL                                                 '%C3%A0%C3%A8%C3%B2'
        107        SEND_VAR                                                 !0
        108        SEND_VAL                                                 'UTF-8'
        109        DO_FCALL                                      0  $26     
        110        CONCAT                                           ~27     $26, '%0A'
        111        ECHO                                                     ~27
   36   112        INIT_FCALL                                               'str_pad'
        113        SEND_VAL                                                 'FOOBAR'
        114        SEND_VAL                                                 0
        115        SEND_VAL                                                 'aeo'
        116        SEND_VAR                                                 !0
        117        DO_ICALL                                         $28     
        118        CONCAT                                           ~29     $28, '%0A'
        119        ECHO                                                     ~29
   37   120        INIT_FCALL                                               'mb_str_pad'
        121        SEND_VAL                                                 'FOOBAR'
        122        SEND_VAL                                                 0
        123        SEND_VAL                                                 '%C3%A0%C3%A8%C3%B2'
        124        SEND_VAR                                                 !0
        125        SEND_VAL                                                 'UTF-8'
        126        DO_FCALL                                      0  $30     
        127        CONCAT                                           ~31     $30, '%0A'
        128        ECHO                                                     ~31
   38   129        INIT_FCALL                                               'str_pad'
        130        SEND_VAL                                                 'FOOBAR'
        131        SEND_VAL                                                 -10
        132        SEND_VAL                                                 'aeo'
        133        SEND_VAR                                                 !0
        134        DO_ICALL                                         $32     
        135        CONCAT                                           ~33     $32, '%0A'
        136        ECHO                                                     ~33
   39   137        INIT_FCALL                                               'mb_str_pad'
        138        SEND_VAL                                                 'FOOBAR'
        139        SEND_VAL                                                 -10
        140        SEND_VAL                                                 '%C3%A0%C3%A8%C3%B2'
        141        SEND_VAR                                                 !0
        142        SEND_VAL                                                 'UTF-8'
        143        DO_FCALL                                      0  $34     
        144        CONCAT                                           ~35     $34, '%0A'
        145        ECHO                                                     ~35
   40   146        ECHO                                                     '--%0A'
   22   147      > JMP                                                      ->9
        148    >   FE_FREE                                                  $3
   43   149      > RETURN                                                   1

Function mb_str_pad:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 7, Position 2 = 11
Branch analysis from position: 7
1 jumps found. (Code = 42) Position 1 = 12
Branch analysis from position: 12
2 jumps found. (Code = 47) Position 1 = 15, Position 2 = 17
Branch analysis from position: 15
2 jumps found. (Code = 47) Position 1 = 20, Position 2 = 22
Branch analysis from position: 20
2 jumps found. (Code = 46) Position 1 = 29, Position 2 = 30
Branch analysis from position: 29
2 jumps found. (Code = 43) Position 1 = 31, Position 2 = 34
Branch analysis from position: 31
1 jumps found. (Code = 42) Position 1 = 35
Branch analysis from position: 35
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 67
Branch analysis from position: 56
1 jumps found. (Code = 42) Position 1 = 68
Branch analysis from position: 68
2 jumps found. (Code = 43) Position 1 = 70, Position 2 = 81
Branch analysis from position: 70
1 jumps found. (Code = 42) Position 1 = 82
Branch analysis from position: 82
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 81
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 67
2 jumps found. (Code = 43) Position 1 = 70, Position 2 = 81
Branch analysis from position: 70
Branch analysis from position: 81
Branch analysis from position: 34
2 jumps found. (Code = 43) Position 1 = 56, Position 2 = 67
Branch analysis from position: 56
Branch analysis from position: 67
Branch analysis from position: 30
Branch analysis from position: 22
Branch analysis from position: 17
Branch analysis from position: 11
2 jumps found. (Code = 47) Position 1 = 15, Position 2 = 17
Branch analysis from position: 15
Branch analysis from position: 17
filename:       /in/3FoFf
function name:  mb_str_pad
number of ops:  87
compiled vars:  !0 = $str, !1 = $pad_len, !2 = $pad_str, !3 = $dir, !4 = $encoding, !5 = $padBefore, !6 = $padAfter, !7 = $targetLen, !8 = $strToRepeatLen, !9 = $repeatTimes, !10 = $repeatedString, !11 = $before, !12 = $after
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    5     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV_INIT                                        !2      '+'
          3        RECV_INIT                                        !3      <const ast>
          4        RECV_INIT                                        !4      null
    7     5        TYPE_CHECK                                    2          !4
          6      > JMPZ                                                     ~13, ->11
          7    >   INIT_FCALL                                               'mb_internal_encoding'
          8        DO_ICALL                                         $14     
          9        QM_ASSIGN                                        ~15     $14
         10      > JMP                                                      ->12
         11    >   QM_ASSIGN                                        ~15     !4
         12    >   ASSIGN                                                   !4, ~15
    8    13        IS_IDENTICAL                                     ~17     !3, 2
         14      > JMPNZ_EX                                         ~17     ~17, ->17
         15    >   IS_IDENTICAL                                     ~18     !3, 0
         16        BOOL                                             ~17     ~18
         17    >   ASSIGN                                                   !5, ~17
    9    18        IS_IDENTICAL                                     ~20     !3, 2
         19      > JMPNZ_EX                                         ~20     ~20, ->22
         20    >   IS_IDENTICAL                                     ~21     !3, 1
         21        BOOL                                             ~20     ~21
         22    >   ASSIGN                                                   !6, ~20
   10    23        INIT_FCALL                                               'mb_strlen'
         24        SEND_VAR                                                 !0
         25        SEND_VAR                                                 !4
         26        DO_ICALL                                         $23     
         27        ASSIGN_OP                                     2          !1, $23
   11    28      > JMPZ_EX                                          ~25     !5, ->30
         29    >   BOOL                                             ~25     !6
         30    > > JMPZ                                                     ~25, ->34
         31    >   DIV                                              ~26     !1, 2
         32        QM_ASSIGN                                        ~27     ~26
         33      > JMP                                                      ->35
         34    >   QM_ASSIGN                                        ~27     !1
         35    >   ASSIGN                                                   !7, ~27
   12    36        INIT_FCALL                                               'mb_strlen'
         37        SEND_VAR                                                 !2
         38        SEND_VAR                                                 !4
         39        DO_ICALL                                         $29     
         40        ASSIGN                                                   !8, $29
   13    41        INIT_FCALL                                               'ceil'
         42        DIV                                              ~31     !7, !8
         43        SEND_VAL                                                 ~31
         44        DO_ICALL                                         $32     
         45        ASSIGN                                                   !9, $32
   14    46        INIT_FCALL                                               'str_repeat'
         47        SEND_VAR                                                 !2
         48        INIT_FCALL                                               'max'
         49        SEND_VAL                                                 0
         50        SEND_VAR                                                 !9
         51        DO_ICALL                                         $34     
         52        SEND_VAR                                                 $34
         53        DO_ICALL                                         $35     
         54        ASSIGN                                                   !10, $35
   15    55      > JMPZ                                                     !5, ->67
         56    >   INIT_FCALL                                               'mb_substr'
         57        SEND_VAR                                                 !10
         58        SEND_VAL                                                 0
         59        INIT_FCALL                                               'floor'
         60        SEND_VAR                                                 !7
         61        DO_ICALL                                         $37     
         62        SEND_VAR                                                 $37
         63        SEND_VAR                                                 !4
         64        DO_ICALL                                         $38     
         65        QM_ASSIGN                                        ~39     $38
         66      > JMP                                                      ->68
         67    >   QM_ASSIGN                                        ~39     ''
         68    >   ASSIGN                                                   !11, ~39
   16    69      > JMPZ                                                     !6, ->81
         70    >   INIT_FCALL                                               'mb_substr'
         71        SEND_VAR                                                 !10
         72        SEND_VAL                                                 0
         73        INIT_FCALL                                               'ceil'
         74        SEND_VAR                                                 !7
         75        DO_ICALL                                         $41     
         76        SEND_VAR                                                 $41
         77        SEND_VAR                                                 !4
         78        DO_ICALL                                         $42     
         79        QM_ASSIGN                                        ~43     $42
         80      > JMP                                                      ->82
         81    >   QM_ASSIGN                                        ~43     ''
         82    >   ASSIGN                                                   !12, ~43
   17    83        CONCAT                                           ~45     !11, !0
         84        CONCAT                                           ~46     ~45, !12
         85      > RETURN                                                   ~46
   18    86*     > RETURN                                                   null

End of function mb_str_pad

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
162.58 ms | 961 KiB | 36 Q