Aucun regex ou rappel nécessaire. Presque tout le travail peut être effectué avec 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 vous utilisez PHP> = 5.3, vous pouvez utiliser lcfirst au lieu de strtolower.
Mettre à jour
Un deuxième paramètre a été ajouté à ucwords dans PHP 5.4.32 / 5.5.16, ce qui signifie que nous n'avons pas besoin de changer d'abord les tirets en espaces (merci à Lars Ebert et PeterM pour l'avoir signalé). Voici le code mis à jour:
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); }
ucwords
fait, accepte un délimiteur comme deuxième paramètre (voir la réponse de PeterM ), donc l'un desstr_replace
appels serait inutile.$str = ! $capitalizeFirstCharacter ? lcfirst($str) : $str;
principalement pour la lisibilité (bien que certains puissent être en désaccord) et / ou pour réduire la complexité du code.Cela peut être fait très simplement, en utilisant ucwords qui accepte le délimiteur comme paramètre:
REMARQUE: nécessite php au moins 5.4.32, 5.5.16
la source
return str_replace($separator, '', lcfirst(ucwords($input, $separator)));
ucwords
a un deuxième paramètredelimiter
, doncstr_replace("_", "", ucwords($input, "_"));
c'est assez bon (dans la plupart des casceci est ma variation sur la façon de gérer cela. Ici, j'ai deux fonctions, la première camelCase transforme quoi que ce soit en camelCase et il ne gâchera pas si la variable contient déjà cameCase. Le second uncamelCase transforme camelCase en trait de soulignement (fonctionnalité intéressante pour les clés de base de données).
testons les deux:
la source
Monotouche surchargé, avec bloc doc ...
la source
null
return
... mis à jour, merci. Voici un lien pour tester ce 3v4l.org/YBHPdJ'utiliserais probablement
preg_replace_callback()
, comme ceci:la source
Vous recherchez preg_replace_callback , vous pouvez l'utiliser comme ceci:
la source
la source
Code non testé. Consultez la documentation PHP pour les fonctions im- / explode et ucfirst.
la source
Une ligne, PHP> = 5.3:
la source
voici une solution très très simple en une seule ligne de code
production ThisIsAString
la source
Alternativement, si vous préférez ne pas gérer les regex et que vous voulez éviter les boucles explicites :
la source
Une autre approche simple:
la source
La bibliothèque TurboCommons contient une méthode formatCase () à usage général dans la classe StringUtils, qui vous permet de convertir une chaîne en de nombreux formats de cas courants, tels que CamelCase, UpperCamelCase, LowerCamelCase, snake_case, Title Case, et bien d'autres.
https://github.com/edertone/TurboCommons
Pour l'utiliser, importez le fichier phar dans votre projet et:
Voici le lien vers le code source de la méthode:
https://github.com/edertone/TurboCommons/blob/b2e015cf89c8dbe372a5f5515e7d9763f45eba76/TurboCommons-Php/src/main/php/utils/StringUtils.php#L653
la source
Essaye ça:
Production:
la source
Dans Laravel utiliser
Str::camel()
la source
Évidemment, si un autre délimiteur que '-', par exemple '_', doit être mis en correspondance également, cela ne fonctionnera pas, alors un preg_replace pourrait convertir tous les délimiteurs (consécutifs) en '-' dans $ text d'abord ...
la source
Cette fonction est similaire à la fonction de @ Svens
Mais plus clair, (je pense: D) et avec le paramètre optionnel pour mettre en majuscule la première lettre ou non.
Usage:
la source
Si vous utilisez le framework Laravel, vous pouvez utiliser uniquement la méthode camel_case () .
la source
Voici une autre option:
la source
$stringWithDash = 'Pending-Seller-Confirmation'; $camelize = str_replace('-', '', ucwords($stringWithDash, '-')); echo $camelize;
sortie: PendingSellerConfirmationucwords
Le deuxième paramètre (facultatif) aide à identifier un séparateur pour caméliser la chaîne.str_replace
est utilisé pour finaliser la sortie en supprimant le séparateur.la source
Voici une petite fonction d'assistance utilisant une approche fonctionnelle array_reduce . Nécessite au moins PHP 7.0
la source
Beaucoup de bonnes solutions ci-dessus, et je peux fournir une manière différente que personne ne mentionne auparavant. Cet exemple utilise array. J'utilise cette méthode sur mon projet Shieldon Firewall .
Essaye-le:
Résultat:
la source
Essaye ça:
la source
e
dépréciation des modificateursC'est plus simple:
la source