picture picture
août 17, 2007 PHP 3 Commentaires

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: !

3 Responses to “Mêttre en majuscule des caractères accentués avec PHP ?”

3 Commentaires

  1. gnidhal dit :

    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 !

  2. Luc Sky Walker dit :

    le CSS ‘est mieux …

  3. yoplait dit :

    mais sé vraiment trop fort, ce blog, j’ador ces tips 8) 8)

Commentaire

Name

Mail (ne sera pas publié)

Website

Laisser ces deux champs tels quels :
:D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: