Majuscules accentuées , fonction stroupper améliorée.

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 797 fois - Téléchargée 20 fois

Contenu du snippet

La strtoupper() en PHP renvoit la mêmes fonction que ci-dessous mais ignore les carractères accentués, par exemple stroupper(?é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.

Source / Exemple :


<? php //fonction stroupper en français

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 .*/
?>

<? php //fonction stroupper en Francais avec un charset 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);
?>

Conclusion :


C'est ma premiere et modeste contribution, j'ai eu beau chercher cette fonction quelque part sur le Net , j'ai rien trouvé ... Si vous rencontrez un bug ou si vous avez une idées pour l'optimiser ...
;)

A voir également

Ajouter un commentaire Commentaires
cs_armenak
Messages postés
58
Date d'inscription
vendredi 29 août 2003
Statut
Membre
Dernière intervention
25 octobre 2010

18 juin 2007 à 09:09
Personnellement, je vous trouve bien injustes. Je suis ravi d'avoir découvert grâce à vous la fonction mb_strtoupper, mais Jits_ ne la connaissait apparemment pas lui non plus, et je trouve son effort extrêmement louable et bien formulé.
coucou747
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Membre
Dernière intervention
30 juillet 2012
41
13 juin 2007 à 16:46
t'aurais plutot du mettre des deux dernieres sources dans les snippets, ca y a plus sa place
kankrelune
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015

12 juin 2007 à 18:40
Sinon y a mb_strtoupper()

http://fr2.php.net/manual/fr/function.mb-strtoupper.php

@ tchaOo°
Jits_
Messages postés
6
Date d'inscription
mercredi 7 juin 2006
Statut
Membre
Dernière intervention
22 juin 2007

12 juin 2007 à 15:05
Salut,

Sur les hébergements OVH mutualisés par exemple et surement sur beaucoups d'autres, il n'y a pas possibilité à ma connaissance de configurer le serveur. Il y a peut être par contre une astuce pour forcer le serveur à faire cela avec une ligne de code. C'est sur ce serait plus propre. J'ai cherché sur le Net mais pas de réponse... Aussi peut etre tes caractères accentués sont en ISO ou encodés HTML. Mon site etant en UTF-8 j'ai as réelement verifié si la fonction native de PHP fonctionnait sur d'autres encodages.
cs_Tortuegeniale
Messages postés
1123
Date d'inscription
lundi 7 janvier 2002
Statut
Membre
Dernière intervention
26 juin 2008
1
12 juin 2007 à 10:49
Et pareil pour ucfirst()
Afficher les 6 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.