Как перевести camelCase в snake_case и обратно
Короткий ответ
Поставьте подчёркивание перед каждой заглавной буквой и переведите строку в нижний регистр:
<?php
echo strtolower(preg_replace('/(?<!^)[A-Z]/', '_$0', 'userFirstName'));Результат:
user_first_nameОбратно в camelCase
Сделайте заглавной первую букву каждого слова, уберите подчёркивания и верните строчную первую букву:
<?php
echo lcfirst(str_replace('_', '', ucwords('user_first_name', '_')));Результат:
userFirstNameКлючи массива
Так преобразуют ключи данных, пришедших из JavaScript:
<?php
$input = ['firstName' => 'Anna', 'birthDate' => '1995-08-20'];
$result = [];
foreach ($input as $key => $value) {
$result[strtolower(preg_replace('/(?<!^)[A-Z]/', '_$0', $key))] = $value;
}
echo json_encode($result);Результат:
{"first_name":"Anna","birth_date":"1995-08-20"}Функции из этого ответа
- preg_replace — Заменяет всё, что подошло под регулярное выражение.
- preg_replace_callback — Заменяет совпадения с шаблоном результатом функции.
- lcfirst — Делает первую букву строки строчной.