Mêttre en majuscule des caractères accentués avec PHP ?
la fonction strtoupper() ne semble pas autoriser cette variante bien française … et pourtant c’est possible !
Vous extrayez d’une base des données la variable $titre="un été gâté…", par exemple.
Vous voulez en faire un titre pour votre site de nouvelles, vous naturellement vous utilisez la fonction strtouppper($titre) pour mêttre cette phrase en majuscule.
Consternation…
- vous obtenez au mieux : L’éTé EST GâTé
- et au pire (si vous avez eu la bonne idée d’utiliser la fonction html_entities() en sus) : L’ÉTÉ EST GÂTÉ
2 solutions pour contourner le problème :
– la solution PHP :
la lecture alphabétique des fonctions se fait selon la langue locale, par défaut en UTF8 (caractères américains non accentués). Pour forcer les fonctions à lire et à interpréter les caractères européens accentuées, il suffit d’annoncer la couleur de la langue utilisée dans l’en-tête de la page avec la fonction setlocale (), ou grace à un include() dans l’en-tête de toutes les pages:
setlocale (LC_ALL, 'fr_FR');
Vous pouvez maintenant utiliser sans soucis la fonction strtoupper !
– La solution CSS :
plus simplement, il suffit d’appliquer la règle CSS "text-transform: uppercase" à la variable $titre :
echo '<h2 style="text-transform: uppercase; "> ',$titre,' </h2>';
Et ça maaaaarche :bravo: !
Chouette comme solution, :bravo: mais il existe aussi la fonction PHP mb_strtoupper
Dans la plupart des cas où les accentués n’étaient pas capitalisés, cette fonction a résolu mon problème.
Mais :)) pour ce site !
le CSS ‘est mieux …
mais sé vraiment trop fort, ce blog, j’ador ces tips