lundi 25 juin 2007

Dhtml en folie

C'est beau et parfois inutile... A voir (tout en dhtml)
http://www.dhteumeuleu.com/

mardi 19 juin 2007

strtolower et UTF-8

La fonction PHP strtolower ne fonctionne pas pour du texte codé en UTF-8.
"This function is sensible to the current locale, namely the LC_CTYPE category (the default LC_CTYPE category is set from the LANG environment variable or by an explicit LC_CTYPE setting, but it can be overriden by the LC_ALL environment setting). If no locale setting is done in the environment, the default locale will be C, for which the lowercase/uppercase conversion is based on the default character set of the system: this may convert only ASCII letters, or also ISO-8859-1 letters depending on the system..." (commentaire du 12-Sep-2002)
Comment transformer en minuscules un texte codé en UTF-8 ?
Le premier reflexe serait de créer une fonction décodant en UTF-8 vers ISO-8859-1, puis de mettre en minuscules et de ré-encoder en UTF-8:

$texte_MAJ_min="Marie A Un Petit Agneau Et Elle L'Aime BEAUCOUP.";
$texte_min=utf8_encode(strtolower(utf8_decode($x)));

Certes, cela fonctionne...
Mais il existe une fonction PHP permettant de résoudre ce problème:

mb_strtolower

(PHP 4 >= 4.3.0, PHP 5)

mb_strtolower — Met tous les caractères en minuscules
Description
string mb_strtolower ( string str [, string encoding] )

mb_strtolower() retourne la chaîne str après avoir converti tous les caractères alphabétiques en minuscules.

encoding spécifie le jeu de caractères de la chaîne str ; s'il est omis, le jeu de caractères interne sera utilisé.


il suffit donc d'utiliser la fonction:

$texte_MAJ_min = "Marie A Un Petit Agneau Et Elle L'Aime BEAUCOUP.";
$texte_min = mb_strtolower($texte_MAJ_min,'UTF-8');