Pages :
(reprise du message précédent)

fvsch a écrit :
Billet qui oublie la solution strtr($chaine, $tableCorrespondance), non?
(Ah ok, ça dit à la fin que cette solution n'était pas souhaitée. Dommage cependant de laisser entendre que strtr est une solution nulle alors que ça peut être une solution fonctionnelle.)


Quand je parle de solution toute nulle, cela n'est évidement pas un avis sur la fonction strtr, mais de son emploi dans ce cas précis.

La fonction que je propose répond à deux préoccupations :

1. Avoir une solution qui marche partout.
2. Pouvoir utiliser la même fonction quelque soit le jeu de caractères de la source.

C'est dommage, mais on ne peut pas compter sur ICONV. Comme l'a soulevé Heyoan, cela n'a rien à voir avec les paramètres de localisation (ou si peu), mais plutôt avec la version de la bibliothèque utilisée par PHP (libiconv ou glibc) : Avec glibc, "é" sera traduit en "e", avec GNU libiconv, ce sera "e’".

Concernant les tableaux de traductions, il suffit que la source ne soit pas dans le même jeu de caractères que le fichier dans lequel est déclarée la fonction, et c'est la merde. C'est pour cela que je n'en voulais pas.

La fonction que je propose n'est qu'un palliatif à une véritable solution qui tarde à venir. Il faut croire que j'en avais marre de voir la solution toute nulle partout, et de fouetter les stagiaires qui l'utilisaient Smiley smile
Modifié par Gofromiel (02 Feb 2011 - 15:19)
Hop me voilà confronté à ce problème et je trouve la réponse encore une fois sur alsacreations. Ouf et Merci Smiley cligne

Pour y avoir passé un peu de temps et pour éviter d'en faire passer à d'autres voici un tableau (presque) complet:

$chars = array ('À'=>'a', 'Á'=>'a', 'Â'=>'a', 'Ã'=>'a', 'Ä'=>'a', 'Å'=>'a', 'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'Ò'=>'o', 'Ó'=>'o', 'Ô'=>'o', 'Õ'=>'o', 'Ö'=>'o', 'Ø'=>'o', 'ò'=>'o', 'ó'=>'o', 'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'È'=>'e', 'É'=>'e', 'Ê'=>'e', 'Ë'=>'e', 'è'=>'e', 'é'=>'e', 'ê'=>'e', 'ë'=>'e', 'Ç'=>'c', 'ç'=>'c', 'Ì'=>'i', 'Í'=>'i', 'Î'=>'i', 'Ï'=>'i', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'Ù'=>'u', 'Ú'=>'u', 'Û'=>'u', 'Ü'=>'u', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ü'=>'u', 'ÿ'=>'y', 'Ñ'=>'n', 'ñ'=>'n', '('=>' ', ')'=>' ', '['=>' ', ']'=>' ', '\\'=>' ', '\''=>'-', '"'=>' ', '~'=>' ', '$'=>' ', '&'=>'-', '%'=>' ', '*'=>' ', '@'=>' ', 'ç'=>'c', '!'=>' ', '?'=>' ', ';'=>' ', ','=>' ', ':'=>' ', '/'=>' ', '^'=>' ', '€'=>'e', '¨'=>' ', '{'=>' ', '}'=>' ', '<'=>' ', '>'=>' ', '|'=>' ', '+'=>' ', '.'=>' ', '-'=>'-', '_'=>'-', ' '=>'-');
Pages :