strtoupper()
La fonction strtoupper() en PHP convertit toutes les lettres minuscules d'une chaîne en majuscules. Très utile pour normaliser des données.
Introduction
strtoupper() convertit chaque lettre minuscule d'une chaîne en majuscule et retourne le résultat. La chaîne d'origine reste inchangée — comme toutes les fonctions PHP sur les chaînes, strtoupper() renvoie une nouvelle chaîne plutôt que de modifier son argument en place.
On l'utilise dès qu'on a besoin d'une sortie ou d'une comparaison insensible à la casse : normaliser des codes pays (us → US), mettre un titre en majuscules, ou comparer deux chaînes sans se soucier de la casse. Cette page couvre la syntaxe, la mise en garde importante concernant le multioctet, ainsi que les fonctions associées souvent utilisées en parallèle.
Syntaxe
strtoupper(string $string): string| Partie | Description |
|---|---|
$string | La chaîne d'entrée. Obligatoire. |
| Retour | Une copie de $string avec chaque lettre ASCII minuscule (a–z) convertie en majuscule. Les caractères non alphabétiques sont retournés tels quels. |
Un exemple basique
Les chiffres, les espaces et la ponctuation (!) passent sans modification — seules les lettres sont mises en majuscules. Notez que $string contient toujours "Hello World!" ; le texte converti se trouve dans $uppercase.
Comparaison insensible à la casse
Un usage courant est la comparaison de la saisie utilisateur sans se préoccuper de la manière dont elle a été saisie. Il suffit de mettre les deux côtés en majuscules, puis de comparer :
<?php
$input = "Yes";
if (strtoupper($input) === "YES") {
echo "Confirmed";
} else {
echo "Not confirmed";
}
// ConfirmedC'est pourquoi strtoupper() (et son homologue strtolower()) apparaissent si souvent dans le code de gestion des formulaires et de routage.
Le piège du multioctet
strtoupper() est basée sur les octets et indépendante des paramètres régionaux pour tout ce qui dépasse le simple ASCII. Elle ne sait convertir en majuscule que les lettres a–z. Les lettres accentuées et non latines sont laissées telles quelles :
<?php
echo strtoupper("café"); // CAFé — the é is not convertedPour le texte Unicode (chaînes UTF-8 avec accents, ñ, cyrillique, grec, etc.), utilisez mb_strtoupper(), qui comprend les encodages de caractères :
<?php
echo mb_strtoupper("café", "UTF-8"); // CAFÉRègle générale : données ASCII uniquement (codes, slugs, étiquettes en anglais) → strtoupper(). Tout ce qui pourrait contenir des caractères internationaux → mb_strtoupper().
Fonctions associées
strtolower()— l'inverse : convertit les lettres majuscules en minuscules.ucfirst()— met en majuscule uniquement le premier caractère d'une chaîne.ucwords()— met en majuscule le premier caractère de chaque mot.
Résumé
strtoupper() retourne une nouvelle copie entièrement en majuscules d'une chaîne ASCII et s'avère pratique pour normaliser des données et effectuer des comparaisons insensibles à la casse. Pour le texte pouvant contenir des caractères non ASCII, préférez mb_strtoupper() afin que les lettres accentuées et non latines soient correctement converties.