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
Output for 7.4.0 - 7.4.33, 8.0.1 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.19, 8.3.0 - 8.3.7
Convert A String To Snake Case. AA  ConvertAStringToSnakeCase.AA Convert_A_String_To_Snake_Case._A_A convert_a_string_to_snake_case._a_a

preferences:
144.85 ms | 402 KiB | 123 Q