Không cần regex hoặc gọi lại. Hầu như tất cả công việc có thể được thực hiện với ucwords:
function dashesToCamelCase($string, $capitalizeFirstCharacter = false)
{
$str = str_replace(' ', '', ucwords(str_replace('-', ' ', $string)));
if (!$capitalizeFirstCharacter) {
$str[0] = strtolower($str[0]);
}
return $str;
}
echo dashesToCamelCase('this-is-a-string');
Nếu bạn đang sử dụng PHP> = 5.3, bạn có thể sử dụng lcfirst thay vì strtolower.
Cập nhật
Tham số thứ hai đã được thêm vào ucwords trong PHP 5.4.32 / 5.5.16, có nghĩa là trước tiên chúng ta không cần thay đổi dấu gạch ngang thành dấu cách (cảm ơn Lars Ebert và PeterM đã chỉ ra điều này). Đây là mã được cập nhật:
function dashesToCamelCase($string, $capitalizeFirstCharacter = false)
{
$str = str_replace('-', '', ucwords($string, '-'));
if (!$capitalizeFirstCharacter) {
$str = lcfirst($str);
}
return $str;
}
echo dashesToCamelCase('this-is-a-string');
if (!$capitalizeFirstCharacter) { $str = lcfirst($str); }