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

Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).

VersionSystem time (s)User time (s)Memory (MiB)
8.4.20.0030.00618.12
8.4.10.0130.00922.09
8.3.150.0110.00817.38
8.3.140.0040.01516.96
8.3.130.0140.00718.65
8.3.120.0040.01120.71
8.3.110.0080.00020.94
8.3.100.0100.01018.65
8.3.90.0090.00026.77
8.3.80.0090.00318.55
8.3.70.0120.00316.63
8.3.60.0110.00718.43
8.3.50.0140.00020.41
8.3.40.0110.00720.24
8.3.30.0070.01018.88
8.3.20.0050.00324.18
8.3.10.0050.00324.66
8.3.00.0000.00826.16
8.2.260.0090.00616.77
8.2.250.0060.01016.71
8.2.240.0090.00616.91
8.2.230.0000.00822.58
8.2.220.0060.00324.06
8.2.210.0040.00426.77
8.2.200.0030.00718.66
8.2.190.0030.01318.67
8.2.180.0130.00725.92
8.2.170.0080.00819.10
8.2.160.0100.00322.96
8.2.150.0020.00525.66
8.2.140.0040.00424.66
8.2.130.0000.00826.16
8.2.120.0040.00421.00
8.2.110.0090.00022.37
8.2.100.0040.00718.16
8.2.90.0030.00518.00
8.2.80.0000.00818.91
8.2.70.0000.00817.88
8.2.60.0040.00417.88
8.2.50.0040.00417.73
8.2.40.0040.00418.34
8.2.30.0050.00218.25
8.2.20.0070.00019.45
8.2.10.0070.00018.23
8.2.00.0000.00719.50
8.1.310.0000.00816.64
8.1.300.0040.00718.36
8.1.290.0060.00330.84
8.1.280.0070.00725.92
8.1.270.0080.00024.66
8.1.260.0040.00426.35
8.1.250.0030.00528.09
8.1.240.0110.00719.55
8.1.230.0120.00020.96
8.1.220.0000.00819.00
8.1.210.0000.00818.77
8.1.200.0030.00617.65
8.1.190.0000.00817.48
8.1.180.0070.00018.10
8.1.170.0050.00317.62
8.1.160.0050.00219.05
8.1.150.0040.00418.85
8.1.140.0070.00017.70
8.1.130.0000.00719.07
8.1.120.0070.00017.68
8.1.110.0030.00617.68
8.1.100.0080.00317.51
8.1.90.0050.00517.63
8.1.80.0040.00817.49
8.1.70.0140.00017.55
8.1.60.0080.00517.64
8.1.50.0150.00217.58
8.1.40.0140.00517.71
8.1.30.0150.00417.74
8.1.20.0160.00317.88
8.1.10.0070.01117.71
8.1.00.0110.00717.66
8.0.300.0050.00318.77
8.0.290.0080.00017.00
8.0.280.0090.00018.57
8.0.270.0050.00517.06
8.0.260.0030.00318.57
8.0.250.0000.00717.31
8.0.240.0070.00017.23
8.0.230.0060.00617.18
8.0.220.0100.00717.16
8.0.210.0100.00517.14
8.0.200.0100.00717.24
8.0.190.0120.00317.29
8.0.180.0170.00017.23
8.0.170.0100.00517.25
8.0.160.0080.00817.24
8.0.150.0130.00317.16
8.0.140.0090.00717.18
8.0.130.0140.00417.14
8.0.120.0000.01817.27
8.0.110.0140.00017.25
8.0.100.0110.00417.18
8.0.90.0050.01017.12
8.0.80.0100.00517.12
8.0.70.0150.00017.22
8.0.60.0090.00617.13
8.0.50.0150.00017.18
8.0.30.0150.00017.29
8.0.20.0080.00817.32
8.0.10.0110.00417.07
7.4.330.0000.00515.55
7.4.320.0030.00316.70
7.4.300.0050.00516.93
7.4.290.0120.00616.88
7.4.280.0100.00716.80
7.4.270.0120.00316.76
7.4.260.0140.00416.83
7.4.250.0070.01016.89
7.4.240.0180.00016.66
7.4.230.0170.00016.75
7.4.220.0100.00516.83
7.4.210.0150.00016.87
7.4.200.0070.00716.93
7.4.190.0110.00316.87
7.4.180.0160.00016.80
7.4.160.0150.00016.64
7.4.150.0120.00316.71
7.4.140.0130.00016.73
7.4.130.0090.00316.73
7.4.120.0090.00316.68
7.4.110.0080.00416.77
7.4.100.0080.00516.87
7.4.90.0140.00016.77
7.4.80.0050.00516.74
7.4.70.0070.00516.80
7.4.60.0070.00416.64
7.4.50.0130.00016.55
7.4.40.0060.00616.52
7.4.30.0030.00716.70
7.4.20.0070.00316.84
7.4.10.0050.00516.73
7.4.00.0090.00416.66

preferences:
68.02 ms | 403 KiB | 5 Q