PHP – Majuscules et accents

Scripts PHP pour mettre en majuscule les carractères accentués mb_strtoupper ne fonctionne pas sur votre serveur ? :
Par exemple vous voulez que « écologie » devienne « Écologie » (en respectant les règles du français ).
Remarque: Les fonction ucfirst() ou strtoupper() natives du language PHP renvoient les mêmes fonctions ci-dessous mais ignorent les carractères accentués, par exemple ucfirst(« écologie ») renvoit « écologie » et même pas « Ecologie » . Ces fonctions sont donc un moyen de remedier à ce problême, que le charset de votre page WEB ou de vos données soient en ISO ou en UTF-8.

Pouquoi accentuer les majuscules? Parfois le sens d’une phrase peut changer si ne vous le faites pas, par exemple  » je suis indigné  » deviendrait «  JE SUIS INDIGNE  » . En toute logique le français préconise donc l’accentuation des majuscules que ce soit sur le début d’un mot ou sur une phrase complète.

Sommaire:


::Fonction PHP ucfirst() en Français : mise en majuscule de la premiere lettre d’une chaine de carractères encodée en UTF-8 (unicode) ou ISO.

$mot=trim($mot);
$maj=$mot[0];
$maj = strtr($maj, « äâàáåãéèëêòóôõöøìíîïùúûüýñçþÿæœðø », »ÄÂÀÁÅÃÉÈËÊÒÓÔÕÖØÌÍÎÏÙÚÛÜÝÑÇÞÝÆŒÐØ »);
$mot = substr_replace($mot,$maj,0,1);
$mot=utf8_encode($mot);
$mot=ucfirst($mot);
return $mot;
}

//Pour appeler la fonction:
echo utf8_maj_fr($variable);

//par exemple
$variable= »écologie »;
echo utf8_maj_fr($variable);

// renvoit Écologie
///////////////////////////////////////////////////////////////////////////////////////////

?>
Par défaut la fonction renvoit un chaîne encodée UTF8 , si vous voulez qu’a la sortie le mot soit encodé en ISO supprimez ou mettez en commentaire la ligne suivante:

$mot=utf8_encode($mot);

Remarque: Cette fonction peut être utilisée si vous ignorez le charset de la chaîne de carractères à traiter, par exemple si la chaîne provient d’un flux RSS ou d’une base de donnée extérieure à votre site WEB. Si vous êtes sur que le charset est en ISO le prochain script utilise une fonction moins gourmande en ressources .

 



:: Fonction PHP ucfirst() en Français : mise en majuscule de la premiere lettre d’un mot d’un chaine de carractères encodée en ISO

function iso_maj_fr($mot)
{
$mot=trim($mot);$maj=$mot[0];$maj = strtr($maj, « äâàáåãéèëêòóôõöøìíîïùúûüýñçþÿæœðø », »ÄÂÀÁÅÃÉÈËÊÒÓÔÕÖØÌÍÎÏÙÚÛÜÝÑÇÞÝÆŒÐØ »);
$mot = substr_replace($mot,$maj,0,1);
$mot=ucfirst($mot);
return $mot;
}

Pour appeler la fonction:
echo iso_maj_fr($variable);

///////////////////////////////////////////////////////////////////////////////////////////

?>
Par défaut la fonction renvoit un chaîne encodée ISO, si vous voulez qu’à la sortie le mot soit encodé en UTF-8 ajoutez la ligne suivante avant la ligne « $mot=ucfirst($mot); »:

$mot=utf8_encode($mot);

///////////////////////////////////////////////////////////////////////////////////////////

?>


:: Fonction PHP strtoupper() en Français: mise en majuscule d’une chaîne carractères encodée en UTF-8 ou ISO


function uc_strtoupper_fr($chaine)
{
$chaine=strtoupper($chaine);$chaine=utf8_decode($chaine);$chaine=trim($chaine);
$chaine = strtr($chaine, « äâàáåãéèëêòóôõöøìíîïùúûüýñçþÿæœðø », »ÄÂÀÁÅÃÉÈËÊÒÓÔÕÖØÌÍÎÏÙÚÛÜÝÑÇÞÝÆŒÐØ »);
$chaine=utf8_encode($chaine);
return $chaine;
}

//Pour appeler la fonction:
echo uc_strtouper_fr($variable);

//par exemple
$variable= »je suis indigné »;
echo utf8_maj_fr($variable);

// renvoit : JE SUIS INDIGNÉ

///////////////////////////////////////////////////////////////////////////////////////////

?>
Par défaut la fonction renvoit un chaîne encodée UTF-8, si vous voulez qu’à la sortie le mot soit encodé en ISO supprimez ou mettez en commentaire la ligne suivante
:

$chaine=utf8_encode($chaine);

Remarque: Cette fonction peut être utilisée si vous ignorez le charset de la chaîne de carractères à traiter, par exemple si la chaîne provient d’un flux RSS ou d’une base de donnée extérieure à votre site WEB. Si vous êtes sur que le charset est en ISO le prochain script utilise une fonction moins gourmande en ressources .



:::: Fonction PHP strtoupper() en Français: mise en majuscule d’une chaîne carractères encodée en ISO


function iso_strtoupper_fr($chaine)
{
$chaine=strtoupper($chaine);$chaine=trim($chaine); $chaine = strtr($chaine, « äâàáåãéèëêòóôõöøìíîïùúûüýñçþÿæœðø », »ÄÂÀÁÅÃÉÈËÊÒÓÔÕÖØÌÍÎÏÙÚÛÜÝÑÇÞÝÆŒÐØ »);

return $chaine;

}

//Pour appeler la fonction:
echo iso_strtouper_fr($variable);

///////////////////////////////////////////////////////////////////////////////////////////

?>
Par défaut la fonction renvoit un chaîne encodée ISO, si vous voulez qu’à la sortie le mot soit encodé en UTF-8 ajoutez la ligne suivante avant la ligne «  return $chaine;« :

$chaine=utf8_encode($chaine);



20 commentaires

  1. Jovilios 8 avril

    Bon, puisque cette page est référencé lors de la recherche à propos de ce genre de problème…

    php à une fonction qui s’appelle : mb_strtoupper( $str, ‘UTF-8′);

    intéressant non ?

  2. Jits 8 avril

    Malheureusement elle fonctionne pas sur tous les serveurs . Mais j’aurai du préciser.

  3. etienne 13 mai

    Surtout que c’est tout le débat de cette page : cette fonction ne traite pas les accents !

    Lire les titre c’est intéressant aussi non ?

  4. Ced 3 février

    Super JITS !

    Tu me tire une fière chandelle du pied !!!

    La fonction mb_strtoupper() ne fonctionne pas chez ces …… de chez Free ! Y’a tellement de limitations chez eux qu’il faut vraiment avoir recourt à des ruses de sioux pour obtenir ce qu’on souhaite !

    Merci encore!
    Céd

  5. Jits 13 février

    mb_strtoupper ne fonctionne pas non plus sur les serveurs mutualisés d’ OVH . D’où je crois l’utilité de cette ruse de sioux en effet, un peu bourrin , mais bon … Tout cas merci d’avoir posté ton retour d’expérience.

  6. Ella 15 février

    Salut Jits,

    Pour les accents je sais que le site ne les gère pas, mais quand tu crée ta catégorie elle est toute difforme. Mais tu peux la réparer, après que tu la créer avec les accents, clic sur modifier ta catégorie et enlève les difformassions, remets tes accents que tu avais mis quand tu la créer et tu va obtenir une catégorie avec les accents impeccable.

    C’est simple tu va voir… ;-)

  7. Ella 19 février

    Salut Jits,

    Ça veut dire quoi ca stp…

    (Par défaut la fonction renvoit un chaîne encodée ISO, si vous voulez qu’à la sortie le mot soit encodé en UTF-8 ajoutez la ligne suivante avant la ligne)

    Merci a bientôt !

  8. Jits 19 février

    Salut,

    Cela ne concerne pas les serveurs de unblog.fr . C’est quand tu développes toi même une application en php.

    Parfois tu rencontres des problèmes si tu encodes les caractères . Généralement les sites francophones utilisent une norme qui n’est pas internationale : la norme iso. Et si dans ton site tu traites des informations internationales ca peut poser problèmes .. Tu peux perdre l’intégrité de l’information . Donc les carracteres non reconnus peuvent rendre illisible une information encodé soit iso ou UTF8.

    Dans les fonction au dessus , en mettant en commentaire , donc en indiquant au serveur qu’il ne doit pas exécuter la ligne tu peut retourner soit des caractères iso ou utf8 .

  9. mutuelles 20 février

    ouaou j ai du mal a comprendre

  10. Ella 21 février

    Salut Jits,

    J’ai du mal a comprendre moi aussi, bah tu sais c’est pas grave.

    Merci de ta réponse ;-)

  11. Pat 23 octobre

    Merci!

  12. EtherKurios 4 juin

    Bonjour !

    Je fait une petite application en php/mysql
    Mon formulaire est en UTF-8

    Mes pages sont enregistrées en UTF-8 (sans BOM) sous Notepad++

    J’ai voulu transformer les données d’un formulaire en MJUSCULE
    Voici ma solution :
    $FOURNISSEUR_nom = utf8_encode(strtoupper(utf8_decode(trim($_POST['FOURNISSEUR_nom']))));

    elle fonctionne très bien lors d’un
    echo ‘Le Fournisseur ‘ . $FOURNISSEUR_nom . ‘ a été crée !’;

    Mais en allant dans ma base MySQL (encodée en utf8_general_ci) je vois des caractères très bizarre (idem lors de l’importation des tables en csv… :-(

    Où est le problème ???

    P.S : je vais tester ton code pour voir si ça fait pareil

  13. efoenix 2 mars

    salut j’ai tester ta fonction et ca marche pas, l’océan
    devient L’OCéAN

  14. christian louboutins tumblr 23 janvier

    Is there a distinction between a parapet and a rampart? If possible, no cut-and-pastes. Ive truly currently researched the actual explanations however I cant understand the distinction. Weve additionally looked up the photos, however We still cant locate any distinctions. Thus, remember to use your military acumen to provide me your individual human touch reply and not a cut-and-paste or a link to a description.

  15. Herve Leger Dress 25 janvier

    I am not sure whether this post is written by yourself? If so you’re wonderful blogger, really great job Thanks!

  16. neesZewsWeeni 2 octobre

    http://www.ez-days.com/
    こういう現実的な女も大嫌いださらにいえば、出場者の皆さんに「出て良かった」と思ってもらえて、受信機を差し込むだけで簡単にワイヤレスマイクとなります。!

  17. eleryslashy 3 octobre

    I don’t focus on gender so much as the personality. In April the Forest Appraisal Committee (FAC) of the Ministry of Environment which will be a native quadcore.!
    http://www.wtmoncler.com/

  18. toto 23 décembre

    carractères > caractères (avec un seul R) ;-)

  19. orc 2925.11 12 octobre

    Today, I went to the beach with my children. I found a sea shell and gave it to my 4 year old daughter and said « You can hear the ocean if you put this to your ear. » She put the shell to her ear and screamed. There was a hermit crab inside and it pinched her ear. She never wants to go back! LoL I know this is totally off topic but I had to tell someone!

    http://google.by/url?q=https://www.yelp.com/biz/sabol-mallory-columbus

  20. local dog trainer in Huntsville 13 octobre

    I am typically to running a blog and i actually respect your content. The article has really peaks my interest. I am going to bookmark your website and maintain checking for new information.

    https://google.pn/url?q=https://www.facebook.com/AlphaInstinctsDogTraining/

Laisser un commentaire