3v4l.org

run code in 500+ 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:  27
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        FRAMELESS_ICALL_3                preg_replace        ~7      '%2F%5Cs%2B%2Fu', ''
          9        OP_DATA                                                      !1
         10        ASSIGN                                                       !1, ~7
   18    11        CONCAT                                               ~9      !1, '%0A'
         12        ECHO                                                         ~9
   22    13        CONCAT                                               ~10     '%241', !0
         14        FRAMELESS_ICALL_3                preg_replace        ~11     '%2F%28.%29%28%3F%3D%5BA-Z%5D%29%2Fu', ~10
         15        OP_DATA                                                      !1
         16        ASSIGN                                                       !1, ~11
   23    17        CONCAT                                               ~13     !1, '%0A'
         18        ECHO                                                         ~13
   26    19        INIT_FCALL                                                   'mb_strtolower'
         20        SEND_VAR                                                     !1
         21        SEND_VAL                                                     'UTF-8'
         22        DO_ICALL                                             $14     
         23        ASSIGN                                                       !1, $14
   27    24        CONCAT                                               ~16     !1, '%0A'
         25        ECHO                                                         ~16
         26      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
167.18 ms | 1881 KiB | 15 Q