це моя варіація того, як з цим боротися. Тут у мене є дві функції, перша камера camelCase перетворює що-небудь на camelCase, і вона не буде безладна, якщо змінна вже містить cameCase. Другий uncamelCase перетворює camelCase на підкреслення (чудова особливість при роботі з ключами бази даних).
function camelCase($str) {
$i = array("-","_");
$str = preg_replace('/([a-z])([A-Z])/', "\\1 \\2", $str);
$str = preg_replace('@[^a-zA-Z0-9\-_ ]+@', '', $str);
$str = str_replace($i, ' ', $str);
$str = str_replace(' ', '', ucwords(strtolower($str)));
$str = strtolower(substr($str,0,1)).substr($str,1);
return $str;
}
function uncamelCase($str) {
$str = preg_replace('/([a-z])([A-Z])/', "\\1_\\2", $str);
$str = strtolower($str);
return $str;
}
давайте перевіримо обидва:
$camel = camelCase("James_LIKES-camelCase");
$uncamel = uncamelCase($camel);
echo $camel." ".$uncamel;
if (!$capitalizeFirstCharacter) { $str = lcfirst($str); }