Sin expresiones regulares o devoluciones de llamada es necesario. Casi todo el trabajo se puede hacer con 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');
Si está usando PHP> = 5.3, se puede utilizar en lugar de lcfirst strtolower.
actualización
Un segundo parámetro se añadió a ucwords en PHP 4.5.32/5.5.16 lo que significa que no tenemos que cambiar primero los guiones a los espacios (gracias a Lars Ebert y PeterM por señalar esto) Aquí está el código de actualización:
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); } ' – AVProgrammer
Tenga en cuenta que' ucwords' en realidad acepta un delimitador como segundo parámetro (consulte [answer by PeterM] (http://stackoverflow.com/a/33122760/2580794)), por lo que una de las llamadas 'str_replace' sería innecesario. –
Gracias por la información @LarsEbert. He actualizado la respuesta. – webbiedave