Fonction de conversion d'une chaine de caractère vers un typage unix

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 820 fois - Téléchargée 21 fois

Contenu du snippet

Bonjour,
Alors cette fonction permet de convertir n'importe quelle chaine de caractère en une équivalence alphanumérique sans accents, espaces et autres particularités.
Le but est simple, c'est pour l'utiliser (dans mon cas) pour l'url rewriting, car les accents et les espaces ca fait bugger le systeme (même la fonction urlencode apparement)

Si je la poste ici, c'est aussi afin de trouver éventuellement une meilleure solution de conversion, car je n'ai pas réussi à mettre la main sur une méthode plus simple et (voire) plus rapide.
Je vous laisse donc découvrir le tout et attends vos commentaires pour l'évolution de cette fonction.

Source / Exemple :


function toUnix ($sChaine) {
	$sSearch = array ('/à|á|â|ä|ã|å/', '/À|Á|Â|Ä|Ã|Å/', '/è|é|ê|ë/', '/È|É|Ê|Ë/', '/ì|í|î|ï/', '/Ì|Í|Î|Ï/', '/ò|ó|ô|ö|ø/', '/Ò|Ó|Ô|Ö|Ø/', '/ù|ú|û|ü/', '/Ù|Ú|Û|Ü/', '/ÿ/', '/Ÿ/', '/ñ/', '/Ñ/', '/ç/', '/Ç/', '/[^a-z0-9]/i');
	$sReplace = array ('a', 'A', 'e', 'E', 'i', 'I', 'o', 'O', 'u', 'U', 'y', 'Y', 'n', 'N', 'c', 'C', '_');
	
	return preg_replace ($sSearch, $sReplace, $sChaine);
}

Conclusion :


L'usage de la méthode strtr pose problème si l'encodage du fichier est en utf-8. (un accent est codé sur plusieurs bit, et pas un charactère, du coup strtr retourne n'importe quoi !)

Cette méthode semble être fonctionnelle dans n'importe quel cas ! :)

A voir également

Ajouter un commentaire

Commentaires

codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1 -
merci :)
guewini
Messages postés
9
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
27 novembre 2008
-
Je dois dire que je n'ai pour l'instant jamais eut le problème ... en tout cas rien à redire sur ta solution. Ca a l'air tip top ^^
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1 -
Une petite simplification du code ? d?t s'imposer.
@Guewini strtr pose probleme si l'encodage du fichier est en utf-8 (en tout cas pour moi ! :/)
C'est pour cela que j'ai gard? ma m?thode originelle, mais optimis'e maintenant ! (:
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1 -
par contre je crois que strtr est plus rapide :)
Oué ! pas mal !, surtout que tu en remplace plus que moi (par les bonnes correspondances) apparement là :)
guewini
Messages postés
9
Date d'inscription
vendredi 1 juin 2007
Statut
Membre
Dernière intervention
27 novembre 2008
-
Moi je fais comme ca (ce qui reviens au même mais ca prend une ligne) :
$chaine = strtr($chaine, "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ -'", "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn___");
inconvénient : c'est caractères par caractère donc le '&' n'est pas remplacable par '_and_'

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.