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

Contenu du snippet

La fonction ucfirst() en language PHP renvoit le mêmes resultat que 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 )à traité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.

Source / Exemple :


<? php //ucfirt() en Français

function utf8_maj_fr($mot)
{ 
$mot=utf8_decode($mot);
$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;
}
/*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 simplifiée .*/

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

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

// renvoit Écologie
?>

<? php 
//La même fonction mais si vous êtes sur que les données dont 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;
}

/*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);

?>

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

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.