Position actuelle: Accueil> Derniers articles> Comment utiliser la fonction UCWords pour modifier de longues chaînes contenant des espaces et des ponctuations pour réaliser un effet de cas idéal?

Comment utiliser la fonction UCWords pour modifier de longues chaînes contenant des espaces et des ponctuations pour réaliser un effet de cas idéal?

M66 2025-06-22

Dans PHP, la fonction UCWords est une méthode courante utilisée pour convertir la première lettre de chaque mot dans une chaîne en majuscule. Son comportement par défaut est de séparer les mots par des espaces, mais UCWords peut ne pas réaliser notre effet de cas idéal lorsque la chaîne contient des marques de ponctuation ou d'autres caractères non alphabétiques. Cet article expliquera comment utiliser UCWords combiné avec d'autres techniques pour traiter les longues chaînes contenant des espaces et des ponctuations pour réaliser une conversion de cas plus précise.

1. Utilisation de base de UCWords

UCWords ne fera que capitaliser la lettre initiale d'un mot séparé par des espaces. Par exemple:

 <?php
$str = "hello world! this is php.";
echo ucwords($str);
?>

Sortir:

 Hello World! This Is Php.

Comme vous pouvez le voir, les lettres suivant la marque de ponctuation sont également traitées correctement, mais UCWords ne les traitera pas automatiquement si la chaîne contient d'autres marques de ponctuation, telles que les traits de gamme ou les apostrophes.

2. Le deuxième paramètre de UCWords - Définissez Word Séparer (PHP 5.4+)

À partir de PHP 5.4, la fonction UCWords prend en charge un deuxième paramètre pour définir quels caractères sont utilisés comme séparateurs de mots. Par exemple:

 <?php
$str = "jack-o'-lantern's day";
echo ucwords($str, " -'");
?>

Sortir:

 Jack-O'-Lantern'S Day

Les espaces, les traits d'essais et les apostrophes sont spécifiés ici en tant que délimiteurs, de sorte que la première lettre après chaque délimiteur est également convertie en majuscules.

3. Combiner des expressions régulières pour atteindre une conversion de cas plus flexible

Si la structure de la chaîne est complexe et que vous composez uniquement sur UCWords n'est pas suffisamment flexible, vous pouvez convertir la première lettre de chaque mot en combinaison avec des expressions régulières:

 <?php
$str = "this is a complex-string, isn't it? yes!";

$callback = function ($matches) {
    return strtoupper($matches[1]) . strtolower(substr($matches[0], 1));
};

$result = preg_replace_callback('/\b\w/u', $callback, $str);

echo $result;
?>

Sortir:

 This Is A Complex-String, Isn't It? Yes!

Ce code utilise preg_replace_callback pour trouver la première lettre de chaque mot pour la conversion majuscule, tout en garantissant les lettres restantes en minuscules.

4. Exemple complet: combinaison UCWords et séparateurs personnalisés

 <?php
$str = "welcome to the m66.net-php tutorial, let's learn ucwords!";

echo ucwords($str, " -'");

?>

Sortir: