Normal ifade veya geri arama gerekmez. Hemen hemen tüm iş ucwords ile yapılabilir:
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');
PHP> = 5.3 kullanıyorsanız, strtolower yerine lcfirst kullanabilirsiniz.
Güncelleme
PHP 5.4.32 / 5.5.16'da ucwords'e ikinci bir parametre eklendi, bu da ilk önce çizgileri boşluk olarak değiştirmemize gerek olmadığı anlamına geliyor (bunu işaret ettiği için Lars Ebert ve PeterM'ye teşekkürler). İşte güncellenmiş kod:
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); }