W3docs

ucfirst()

La fonction ucfirst() en PHP met en majuscule le premier caractère d'une chaîne. Découvrez sa syntaxe, ses cas particuliers et ses différences avec les fonctions similaires.

ucfirst() retourne une copie d'une chaîne dont le premier caractère est converti en majuscule. Tous les autres caractères restent exactement tels quels. C'est la fonction à utiliser lorsque vous avez besoin de mettre en majuscule un nom, une phrase ou un libellé sans toucher au reste du texte.

Cette page couvre la syntaxe, la valeur de retour, les cas particuliers qui surprennent souvent (chiffres, chaînes déjà en majuscule, texte multi-octet), et les différences entre ucfirst() et les autres fonctions de mise en majuscule.

Syntaxe

ucfirst(string $string): string
ParamètreDescription
$stringLa chaîne d'entrée.

Valeur de retour : une nouvelle chaîne dont le premier caractère est en majuscule. ucfirst() ne modifie pas $string en place — elle retourne le résultat, vous devez donc le capturer ou l'afficher. Si le premier caractère n'est pas une lettre minuscule (un chiffre, un symbole ou déjà en majuscule), la chaîne est retournée sans modification.

Exemple de base

php— editable, runs on the server

Seul le h de début devient H. La virgule, le reste des mots et le point d'exclamation ne sont pas touchés — ucfirst() ne met jamais en minuscule ni ne modifie quoi que ce soit après le premier caractère.

Ce que ucfirst() ne fait pas

Une erreur courante est de s'attendre à ce que ucfirst() nettoie toute la chaîne. Ce n'est pas le cas :

<?php

echo ucfirst("HELLO") . "\n";   // HELLO  (first char already uppercase → no change)
echo ucfirst("hELLO") . "\n";   // HELLO  (only the first char is touched, not the rest)
echo ucfirst("123abc") . "\n";  // 123abc (first char is a digit → nothing to capitalize)

Si vous voulez obtenir un mot correctement mis en majuscule à partir d'une entrée désordonnée, passez-la d'abord en minuscules, puis mettez en majuscule :

<?php

$messy = "hELLO";
echo ucfirst(strtolower($messy));   // Hello

Mettre en majuscule chaque mot

ucfirst() n'affecte que le tout premier caractère de l'ensemble de la chaîne. Pour mettre en majuscule la première lettre de chaque mot, utilisez plutôt ucwords() :

<?php

$title = "the quick brown fox";

echo ucfirst($title) . "\n";   // The quick brown fox
echo ucwords($title) . "\n";   // The Quick Brown Fox

Texte multi-octet / non-ASCII

ucfirst() fonctionne octet par octet et ne comprend que les lettres ASCII (az). Elle ne mettra pas correctement en majuscule les premières lettres accentuées ou non-latines telles que é, ñ ou les caractères cyrilliques. Pour ceux-ci, la gestion sensible à la casse nécessite l'extension de chaîne multi-octet — il n'existe pas de mb_ucfirst(), aussi un schéma courant est :

<?php

function mb_ucfirst(string $string, string $encoding = "UTF-8"): string
{
    $first = mb_strtoupper(mb_substr($string, 0, 1, $encoding), $encoding);
    return $first . mb_substr($string, 1, null, $encoding);
}

echo mb_ucfirst("élise");   // Élise

Quand l'utiliser

  • Mise en forme de la saisie utilisateur — afficher "john" saisi dans un formulaire comme "John".
  • Casse de phrase — mettre en majuscule le premier mot d'un message ou d'un libellé généré.
  • Construction d'identifiants lisibles — transformer un segment de slug en titre.

Pour l'opération inverse (mettre le premier caractère en minuscule), voir lcfirst(). Pour modifier la casse de toute la chaîne, voir strtoupper() et strtolower().

Résumé

ucfirst() met en majuscule uniquement le premier caractère d'une chaîne et retourne le résultat sans modifier l'original. Elle ignore les non-lettres et les caractères déjà en majuscule, ne touche jamais au reste de la chaîne, et est limitée à l'ASCII — combinez-la avec strtolower() pour normaliser une entrée désordonnée, avec ucwords() pour mettre en majuscule chaque mot, ou avec les fonctions multi-octets ci-dessus pour le texte accentué.

Pratique

Pratique
Que fait la fonction PHP ucfirst() ?
Que fait la fonction PHP ucfirst() ?
Was this page helpful?