3v4l.org

run code in 300+ PHP versions simultaneously
<?php // 初期値です $delimiter = '_'; $value = ' Convert a string to snake case. AA '; // ucwords 関数で文字列の各単語の最初の文字を大文字にしています // @see https://www.php.net/manual/ja/function.ucwords // ここで区切られた文字列の頭を全て大文字にすることによって // 後の処理で"_"を付けずに合体させてしまうことを防いでいます $value = ucwords($value); echo $value."\n"; // Convert A String To Snake Case. AA // 空白を全て詰めます。 // これをしない場合、" _A"の様に謎の空白が残った実行結果になってしまいます。 // この処理はもう一度行う正規表現内にまとめることも可能です。 // おそらく貪欲な探索のループが起こるのを警戒して無難に分離しています。 $value = preg_replace('/\s+/u', '', $value); echo $value."\n"; // ConvertAStringToSnakeCase.AA // 先読みの正規表現で大文字が見つかり次第 _{$見つかった大文字} となる様にしています。 // (.) と $1 で大文字以前に何か文字が必要、とすることで最初の大文字の前に"_"が追加されることを防止しています。 $value = preg_replace('/(.)(?=[A-Z])/u', '$1'.$delimiter, $value); echo $value."\n";// Convert_A_String_To_Snake_Case._A_A // 最後に文字列中の大文字を全て小文字に変換してスネークケースとして完成させています。 $value = mb_strtolower($value, 'UTF-8'); echo $value."\n"; // convert_a_string_to_snake_case._a_a
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/BsoTs
function name:  (null)
number of ops:  33
compiled vars:  !0 = $delimiter, !1 = $value
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    4     0  E >   ASSIGN                                                   !0, '_'
    5     1        ASSIGN                                                   !1, '++Convert+a++string+to+snake++case.++AA%E3%80%80'
   10     2        INIT_FCALL                                               'ucwords'
          3        SEND_VAR                                                 !1
          4        DO_ICALL                                         $4      
          5        ASSIGN                                                   !1, $4
   11     6        CONCAT                                           ~6      !1, '%0A'
          7        ECHO                                                     ~6
   17     8        INIT_FCALL                                               'preg_replace'
          9        SEND_VAL                                                 '%2F%5Cs%2B%2Fu'
         10        SEND_VAL                                                 ''
         11        SEND_VAR                                                 !1
         12        DO_ICALL                                         $7      
         13        ASSIGN                                                   !1, $7
   18    14        CONCAT                                           ~9      !1, '%0A'
         15        ECHO                                                     ~9
   22    16        INIT_FCALL                                               'preg_replace'
         17        SEND_VAL                                                 '%2F%28.%29%28%3F%3D%5BA-Z%5D%29%2Fu'
         18        CONCAT                                           ~10     '%241', !0
         19        SEND_VAL                                                 ~10
         20        SEND_VAR                                                 !1
         21        DO_ICALL                                         $11     
         22        ASSIGN                                                   !1, $11
   23    23        CONCAT                                           ~13     !1, '%0A'
         24        ECHO                                                     ~13
   26    25        INIT_FCALL                                               'mb_strtolower'
         26        SEND_VAR                                                 !1
         27        SEND_VAL                                                 'UTF-8'
         28        DO_ICALL                                         $14     
         29        ASSIGN                                                   !1, $14
   27    30        CONCAT                                           ~16     !1, '%0A'
         31        ECHO                                                     ~16
         32      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
168.72 ms | 1462 KiB | 16 Q