W3docs

ucwords()

La fonction ucwords() en PHP met en majuscule le premier caractère de chaque mot d'une chaîne. Découvrez sa syntaxe et ses options.

Introduction

La fonction ucwords() en PHP met en majuscule le premier caractère de chaque mot d'une chaîne et retourne le résultat. C'est l'utilitaire idéal pour transformer une saisie utilisateur comme "jane doe" en un "Jane Doe" présentable — pratique pour les noms, titres, en-têtes et libellés.

Cette page couvre la syntaxe, le paramètre optionnel de délimiteur, les pièges qui surprennent la plupart des développeurs (la fonction ne met pas en minuscule le reste du mot, et elle ne divise que sur les espaces par défaut), ainsi que les différences entre ucwords() et les fonctions associées.

Syntaxe

ucwords(string $string, string $separators = " \t\r\n\f\v"): string
ParamètreDescription
$stringLa chaîne d'entrée à transformer.
$separators(Optionnel) Les caractères qui marquent le début d'un nouveau « mot ». Par défaut, les espaces blancs : espace, tabulation, retour chariot, nouvelle ligne, saut de page et tabulation verticale.

La fonction retourne une nouvelle chaîne — elle ne modifie pas $string en place, car les chaînes PHP sont passées par valeur.

Exemple de base

php— editable, runs on the server

Résultat :

Hello, World!

ucwords() parcourt la chaîne et met en majuscule toute lettre qui suit un délimiteur (ou qui se trouve au tout début). Ici, hello et world ont tous les deux leur première lettre mise en majuscule.

Piège : la fonction ne met pas en minuscule le reste

Une surprise courante est que ucwords() ne touche que la première lettre de chaque mot. Les lettres déjà en majuscule sont laissées telles quelles :

<?php

echo ucwords("hello WORLD"); // Hello WORLD — "WORLD" keeps its existing uppercase letters
echo "\n";
echo ucwords("MARY had a LITTLE lamb"); // MARY Had A LITTLE Lamb

Si vous souhaitez un titre propre où seule la première lettre de chaque mot est en majuscule, mettez d'abord la chaîne en minuscule avec strtolower() :

<?php

$title = "MARY HAD A LITTLE LAMB";
echo ucwords(strtolower($title)); // Mary Had A Little Lamb

Délimiteurs personnalisés

Par défaut, seuls les espaces séparent les mots, donc les valeurs avec tirets ou barres verticales sont traitées comme un seul mot. Passez l'argument optionnel $separators pour mettre en majuscule après d'autres caractères également :

<?php

// Default: only the first letter is capitalized.
echo ucwords("hello-world|of-php");       // Hello-world|of-php
echo "\n";

// Treat "-" and "|" as word boundaries as well.
echo ucwords("hello-world|of-php", "-|"); // Hello-World|Of-Php

Cela est utile pour les slugs, les noms comme "o'brien", ou tout texte séparé par des caractères spéciaux. Notez que lorsque vous fournissez $separators, les espaces ne sont plus des délimiteurs à moins que vous ne les incluiez vous-même — un appel typique est donc ucwords($name, " -").

ucwords() vs. fonctions associées

FonctionCe qu'elle fait
ucfirst()Met en majuscule uniquement le premier caractère de toute la chaîne.
ucwords()Met en majuscule le premier caractère de chaque mot.
strtoupper()Convertit la chaîne entière en majuscules.
strtolower()Convertit la chaîne entière en minuscules.
lcfirst()Met en minuscule le premier caractère de la chaîne.

Remarque sur les caractères multioctets et accentués

ucwords() fonctionne octet par octet et est fiable pour l'ASCII pur. Elle ne capitalise pas correctement les lettres accentuées ou non latines (par exemple é, ñ, ou le cyrillique). Pour une mise en titre respectant Unicode, utilisez l'extension mbstring avec mb_convert_case($string, MB_CASE_TITLE, "UTF-8") à la place.

Conclusion

ucwords() est la méthode standard pour mettre en majuscule la première lettre de chaque mot d'une chaîne. Retenez ses deux comportements clés : elle laisse les lettres restantes telles quelles (combinez-la avec strtolower() pour une casse de titre propre), et elle divise sur les espaces sauf si vous passez des $separators personnalisés. Pour le texte accentué, préférez mb_convert_case().

Pratique

Pratique
Quelle est la fonction de 'ucwords' en PHP ?
Quelle est la fonction de 'ucwords' en PHP ?
Was this page helpful?