3v4l.org

run code in 300+ PHP versions simultaneously
<?php function truncate($string, $chars = 100, $terminator = ' …') { var_dump($string, $chars, $terminator); var_dump(mb_strlen($terminator)); $cutPos = $chars - mb_strlen($terminator); var_dump($cutPos); var_dump(mb_strpos($string, ' ', $cutPos)); var_dump(mb_substr($string, 0, mb_strpos($string, ' ', $cutPos))); $boundaryPos = mb_strrpos(mb_substr($string, 0, mb_strpos($string, ' ', $cutPos)), ' '); var_dump($boundaryPos); var_dump(mb_substr($string, 0, $boundaryPos === false ? $cutPos : $boundaryPos) . $terminator); return mb_substr($string, 0, $boundaryPos === false ? $cutPos : $boundaryPos) . $terminator; } echo truncate("#mercedes#benz#flow#summer#drunk#guys#abiball#effzeh#köln#aha#böttiman#mied#labums …");
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/fSkNB
function name:  (null)
number of ops:  5
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   15     0  E >   INIT_FCALL                                               'truncate'
          1        SEND_VAL                                                 '%23mercedes%23benz%23flow%23summer%23drunk%23guys%23abiball%23effzeh%23k%C3%83%C2%B6ln%23aha%23b%C3%83%C2%B6ttiman%23mied%23labums+%C3%A2%C2%80%C2%A6'
          2        DO_FCALL                                      0  $0      
          3        ECHO                                                     $0
          4      > RETURN                                                   1

Function truncate:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 67, Position 2 = 69
Branch analysis from position: 67
1 jumps found. (Code = 42) Position 1 = 70
Branch analysis from position: 70
2 jumps found. (Code = 43) Position 1 = 80, Position 2 = 82
Branch analysis from position: 80
1 jumps found. (Code = 42) Position 1 = 83
Branch analysis from position: 83
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 82
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 69
2 jumps found. (Code = 43) Position 1 = 80, Position 2 = 82
Branch analysis from position: 80
Branch analysis from position: 82
filename:       /in/fSkNB
function name:  truncate
number of ops:  88
compiled vars:  !0 = $string, !1 = $chars, !2 = $terminator, !3 = $cutPos, !4 = $boundaryPos
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   RECV                                             !0      
          1        RECV_INIT                                        !1      100
          2        RECV_INIT                                        !2      '+%E2%80%A6'
    3     3        INIT_FCALL                                               'var_dump'
          4        SEND_VAR                                                 !0
          5        SEND_VAR                                                 !1
          6        SEND_VAR                                                 !2
          7        DO_ICALL                                                 
    4     8        INIT_FCALL                                               'var_dump'
          9        INIT_FCALL                                               'mb_strlen'
         10        SEND_VAR                                                 !2
         11        DO_ICALL                                         $6      
         12        SEND_VAR                                                 $6
         13        DO_ICALL                                                 
    5    14        INIT_FCALL                                               'mb_strlen'
         15        SEND_VAR                                                 !2
         16        DO_ICALL                                         $8      
         17        SUB                                              ~9      !1, $8
         18        ASSIGN                                                   !3, ~9
    6    19        INIT_FCALL                                               'var_dump'
         20        SEND_VAR                                                 !3
         21        DO_ICALL                                                 
    7    22        INIT_FCALL                                               'var_dump'
         23        INIT_FCALL                                               'mb_strpos'
         24        SEND_VAR                                                 !0
         25        SEND_VAL                                                 '+'
         26        SEND_VAR                                                 !3
         27        DO_ICALL                                         $12     
         28        SEND_VAR                                                 $12
         29        DO_ICALL                                                 
    8    30        INIT_FCALL                                               'var_dump'
         31        INIT_FCALL                                               'mb_substr'
         32        SEND_VAR                                                 !0
         33        SEND_VAL                                                 0
         34        INIT_FCALL                                               'mb_strpos'
         35        SEND_VAR                                                 !0
         36        SEND_VAL                                                 '+'
         37        SEND_VAR                                                 !3
         38        DO_ICALL                                         $14     
         39        SEND_VAR                                                 $14
         40        DO_ICALL                                         $15     
         41        SEND_VAR                                                 $15
         42        DO_ICALL                                                 
    9    43        INIT_FCALL                                               'mb_strrpos'
         44        INIT_FCALL                                               'mb_substr'
         45        SEND_VAR                                                 !0
         46        SEND_VAL                                                 0
         47        INIT_FCALL                                               'mb_strpos'
         48        SEND_VAR                                                 !0
         49        SEND_VAL                                                 '+'
         50        SEND_VAR                                                 !3
         51        DO_ICALL                                         $17     
         52        SEND_VAR                                                 $17
         53        DO_ICALL                                         $18     
         54        SEND_VAR                                                 $18
         55        SEND_VAL                                                 '+'
         56        DO_ICALL                                         $19     
         57        ASSIGN                                                   !4, $19
   10    58        INIT_FCALL                                               'var_dump'
         59        SEND_VAR                                                 !4
         60        DO_ICALL                                                 
   11    61        INIT_FCALL                                               'var_dump'
         62        INIT_FCALL                                               'mb_substr'
         63        SEND_VAR                                                 !0
         64        SEND_VAL                                                 0
         65        TYPE_CHECK                                    4          !4
         66      > JMPZ                                                     ~22, ->69
         67    >   QM_ASSIGN                                        ~23     !3
         68      > JMP                                                      ->70
         69    >   QM_ASSIGN                                        ~23     !4
         70    >   SEND_VAL                                                 ~23
         71        DO_ICALL                                         $24     
         72        CONCAT                                           ~25     $24, !2
         73        SEND_VAL                                                 ~25
         74        DO_ICALL                                                 
   12    75        INIT_FCALL                                               'mb_substr'
         76        SEND_VAR                                                 !0
         77        SEND_VAL                                                 0
         78        TYPE_CHECK                                    4          !4
         79      > JMPZ                                                     ~27, ->82
         80    >   QM_ASSIGN                                        ~28     !3
         81      > JMP                                                      ->83
         82    >   QM_ASSIGN                                        ~28     !4
         83    >   SEND_VAL                                                 ~28
         84        DO_ICALL                                         $29     
         85        CONCAT                                           ~30     $29, !2
         86      > RETURN                                                   ~30
   13    87*     > RETURN                                                   null

End of function truncate

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
153.59 ms | 1407 KiB | 24 Q