3v4l.org

run code in 300+ PHP versions simultaneously
<?php function mb_cutStr($str, $len) { $new_str = ' '; $wordLen = 0; while ($wordLen < $len) { $temp_str = substr($str, 0, 1); if (ord($temp_str) > 127) { // 中文 $new_str .= substr($str, 0, 3); $str = substr($str, 3); $wordLen++; } else { // E文 $new_str .= substr($str, 0, 1); $str = substr($str, 1); $wordLen++; } } return $new_str; } $a = '测试这是一个测试'; //$a = 'xxxxbbbbbnnn'; $b = mb_cutStr($a,5); var_dump($b); ?>
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/vPOMr
function name:  (null)
number of ops:  10
compiled vars:  !0 = $a, !1 = $b
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   41     0  E >   ASSIGN                                                   !0, '%E6%B5%8B%E8%AF%95%E8%BF%99%E6%98%AF%E4%B8%80%E4%B8%AA%E6%B5%8B%E8%AF%95'
   44     1        INIT_FCALL                                               'mb_cutstr'
          2        SEND_VAR                                                 !0
          3        SEND_VAL                                                 5
          4        DO_FCALL                                      0  $3      
          5        ASSIGN                                                   !1, $3
   45     6        INIT_FCALL                                               'var_dump'
          7        SEND_VAR                                                 !1
          8        DO_ICALL                                                 
   47     9      > RETURN                                                   1

Function mb_cutstr:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
2 jumps found. (Code = 44) Position 1 = 43, Position 2 = 5
Branch analysis from position: 43
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 5
2 jumps found. (Code = 43) Position 1 = 16, Position 2 = 29
Branch analysis from position: 16
1 jumps found. (Code = 42) Position 1 = 41
Branch analysis from position: 41
Branch analysis from position: 29
2 jumps found. (Code = 44) Position 1 = 43, Position 2 = 5
Branch analysis from position: 43
Branch analysis from position: 5
filename:       /in/vPOMr
function name:  mb_cutStr
number of ops:  45
compiled vars:  !0 = $str, !1 = $len, !2 = $new_str, !3 = $wordLen, !4 = $temp_str
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
          1        RECV                                             !1      
    7     2        ASSIGN                                                   !2, '+'
    9     3        ASSIGN                                                   !3, 0
   11     4      > JMP                                                      ->41
   13     5    >   INIT_FCALL                                               'substr'
          6        SEND_VAR                                                 !0
          7        SEND_VAL                                                 0
          8        SEND_VAL                                                 1
          9        DO_ICALL                                         $7      
         10        ASSIGN                                                   !4, $7
   15    11        INIT_FCALL                                               'ord'
         12        SEND_VAR                                                 !4
         13        DO_ICALL                                         $9      
         14        IS_SMALLER                                               127, $9
         15      > JMPZ                                                     ~10, ->29
   17    16    >   INIT_FCALL                                               'substr'
         17        SEND_VAR                                                 !0
         18        SEND_VAL                                                 0
         19        SEND_VAL                                                 3
         20        DO_ICALL                                         $11     
         21        ASSIGN_OP                                     8          !2, $11
   19    22        INIT_FCALL                                               'substr'
         23        SEND_VAR                                                 !0
         24        SEND_VAL                                                 3
         25        DO_ICALL                                         $13     
         26        ASSIGN                                                   !0, $13
   21    27        PRE_INC                                                  !3
         28      > JMP                                                      ->41
   25    29    >   INIT_FCALL                                               'substr'
         30        SEND_VAR                                                 !0
         31        SEND_VAL                                                 0
         32        SEND_VAL                                                 1
         33        DO_ICALL                                         $16     
         34        ASSIGN_OP                                     8          !2, $16
   27    35        INIT_FCALL                                               'substr'
         36        SEND_VAR                                                 !0
         37        SEND_VAL                                                 1
         38        DO_ICALL                                         $18     
         39        ASSIGN                                                   !0, $18
   29    40        PRE_INC                                                  !3
   11    41    >   IS_SMALLER                                               !3, !1
         42      > JMPNZ                                                    ~21, ->5
   35    43    > > RETURN                                                   !2
   37    44*     > RETURN                                                   null

End of function mb_cutstr

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
151.81 ms | 1403 KiB | 20 Q