c'est ma variation sur la façon de traiter avec elle. Ici, j'ai deux fonctions, la première camelCase transforme n'importe quoi dans un camelCase et il ne gâchera pas si la variable contient déjà cameCase. Seconde uncamelCase transforme camelCase en trait de soulignement (très pratique pour les clés de base de données).
function camelCase($str) {
$i = array("-","_");
$str = preg_replace('/([a-z])([A-Z])/', "\\1 \\2", $str);
$str = preg_replace('@[^a-zA-Z0-9\-_ ][email protected]', '', $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;
}
permet de tester à la fois:
$camel = camelCase("James_LIKES-camelCase");
$uncamel = uncamelCase($camel);
echo $camel." ".$uncamel;
'if (! $ CapitalizeFirstCharacter) { $ str = lcfirst ($ str); } ' – AVProgrammer
Notez que' ucwords' accepte en fait un délimiteur comme deuxième paramètre (voir [réponse de PeterM] (http://stackoverflow.com/a/33122760/2580794)), donc l'un des appels 'str_replace' serait inutile. –
Merci pour l'info @LarsEbert. J'ai mis à jour la réponse. – webbiedave