La fonction strtoupper() est une fonction native de PHP qui reçoit une chaîne en entrée et retourne une nouvelle chaîne dont chaque lettre alphabétique est convertie en majuscule. Son comportement sur les lettres accentuées dépend directement de la locale configurée sur le serveur. Avec la locale par défaut "C", les caractères é, è ou à ne subissent aucune conversion de casse.
Cette fonction est particulièrement utile pour normaliser des identifiants, des codes produits ou des mots-clés avant une comparaison insensible à la casse.
Syntaxe de strtoupper en PHP
La syntaxe de strtoupper() est minimaliste : elle n’accepte qu’un seul paramètre obligatoire de type string. La fonction retourne toujours une valeur de type string, jamais null ni false, ce qui la rend sûre dans toute expression. Son paramètre peut être une variable, une chaîne littérale ou le retour direct d’une autre fonction PHP.
Aucune extension supplémentaire n’est requise, car strtoupper() fait partie du cœur natif de PHP depuis la version 4.
strtoupper(string $string): string
La signature indique clairement que la fonction attend un string en entrée et retourne un string en sortie. Aucune valeur optionnelle n’existe : le comportement est identique quelle que soit la longueur de la chaîne transmise. En PHP 8, passer un type non-string déclenche une conversion automatique par coercition de type.
Comment gérer les accents avec les majuscules en PHP ?
strtoupper() ne traite pas correctement les caractères Unicode comme é, à, ö ou ç en dehors d’une locale adaptée. La fonction mb_strtoupper() résout ce problème en exploitant l’encodage de la chaîne pour appliquer la conversion de casse. Elle accepte deux paramètres : la chaîne source et l’encodage cible, le plus souvent 'UTF-8'. Cette fonction appartient à l’extension mbstring, qui doit être activée dans la configuration du serveur.
Dans tout projet PHP traitant du contenu en français, espagnol, allemand ou toute autre langue avec diacritiques, mb_strtoupper() est la solution correcte. Utiliser strtoupper() seule sur ces langues produit des sorties tronquées et typographiquement non conformes.
<?php
$texte = "écologie et société";
echo strtoupper($texte); // Sortie : "éCOLOGIE ET SOCIéTé"
echo mb_strtoupper($texte, 'UTF-8'); // Sortie : "ÉCOLOGIE ET SOCIÉTÉ"
?>
La différence entre les deux lignes illustre clairement la limite de strtoupper() sur les caractères accentués. mb_strtoupper() interprète correctement l’encodage UTF-8 et produit une majuscule conforme pour chaque caractère. Vérifie que la directive extension=mbstring est bien activée dans ton fichier php.ini avant tout déploiement.
Fonctions PHP de mise en majuscules
D’autres fonctions natives permettent une capitalisation plus ciblée selon le contexte d’utilisation. La fonction ucfirst() cible uniquement le premier caractère de la chaîne transmise, sans toucher au reste de la chaîne. La fonction ucwords() applique cette même logique sur le premier caractère de chaque mot séparé par un espace. Ces deux fonctions sont natives depuis PHP 4 et ne nécessitent aucune extension supplémentaire.
| Fonction | Périmètre d’action | Support UTF-8 |
|---|---|---|
strtoupper() | Toute la chaîne | ❌ Non |
mb_strtoupper() | Toute la chaîne | ✅ Oui |
ucfirst() | Premier caractère de la chaîne | ❌ Non |
ucwords() | Premier caractère de chaque mot | ❌ Non |
Sources: PHPnet