Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

FONCTION DE CONVERSION D'UNE CHAINE DE CARACTÈRE VERS UN TYPAGE UNIX


Information sur la source

Catégorie :Chaîne de caratère Classé sous : unix, chaine, caractere, convertion, preg Niveau : Débutant Date de création : 23/01/2007 Date de mise à jour : 22/05/2008 22:59:57 Vu : 9 963

Note :
Aucune note

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

Description

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

  • 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);
  • }
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 ! :)
 

Historique

22 mai 2008 22:59:57 :
Simplification du code

Commentaires et avis

signaler à un administrateur
Commentaire de juki_webmaster le 23/01/2007 14:17:03

Bonne idée d'utiliser #, la methode que j'ai trouvé est de faire un htmlentities(..,.., 'utf-8'), de faire une array('À' => 'a' ...), suivit d'une grose boucle foreach() et de str_replace(), pour terminer avec un html_encode(.., .., 'utf-8').
Car le truc "dangeureux" c'est d'encoder mal son script php (ça peut arriver par inavertance) et de ce retrouvé avec quelque chose de pas encodé ou pire de mal encodé.
C'est pourqoui je n'aime pas du tout laisser des choses non ASCII hors des commentaires.
Si ya mieu je prend :)

signaler à un administrateur
Commentaire de codefalse le 23/01/2007 14:19:58 administrateur CS

merci de ton commentaire mais j'ai pas tout compris :
"si ya mieu je prend", la mienne est mieux ou pas d'apres toi ? si elle est pas mieux, met la tienne, justement, le but ici (pour moi) et de trouver la meilleur fonction pour ce type d'usage :)
mais apparement d'apres ce que tu en dit, la mienne serait plus rapide, car elle utilise que les expressions régulieres, que toi ca utilise deux fois la fonctions htmlentities, une boucle foreach et un str_replace, ca parait plus lourd :)

signaler à un administrateur
Commentaire de garfield90 le 24/01/2007 14:21:23

Tu pourrais déjà regrouper les caractères par groupe tes à,ä,à ensemble idem pour le é,è,...

Tu aurais un tableau beaucoup plus lisible.
$search  = array('#à|ä|â#',...,'# |"|\'#');
$replace = array('a',...,'-');

Je trouverai ca plus simple mais bon après c'est une histoire de bench

signaler à un administrateur
Commentaire de kankrelune le 25/01/2007 13:49:06

comme garfield90... le tout dans un str_replace() (sauf pour la dernière expression)

@ tchaOo°

signaler à un administrateur
Commentaire de codefalse le 17/05/2007 15:45:19 administrateur CS

Kankrelune : le soucis avec str_replace, c'est le fait qu'elle est sensible à la casse, et str_ireplace n'est que depuis php5 ? La meilleur solution reste encore preg_replace (sauf si tu a une proposition plus interessante ! je suis vraiment interessé d'optimiser cette fonction !)

signaler à un administrateur
Commentaire de kankrelune le 17/05/2007 21:02:41

Oui dans ce cas là preg_replace reste la solution la moins prise de tête... .. . ;o)

@ tchaOo°

signaler à un administrateur
Commentaire de guewini le 01/06/2007 09:55:45

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_'

signaler à un administrateur
Commentaire de codefalse le 01/06/2007 10:38:56 administrateur CS

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à :)

signaler à un administrateur
Commentaire de codefalse le 22/05/2008 23:01:28 administrateur CS

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 ! (:

signaler à un administrateur
Commentaire de guewini le 23/05/2008 16:42:32

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 ^^

signaler à un administrateur
Commentaire de codefalse le 24/05/2008 11:13:16 administrateur CS

merci :)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Probleme a la con(chaine de caractere) [ par webdragon ] Bonsoir,je suis un débuter qui fait son site comment on fait pour extraire le membre d'une chaine de caractereexemple:$hh="Nbvcdddss";et pour faire qu Taille d'une chaine de caractere [ par g0belin ] Comment savoir la Taille d'une chaine de caractere???Je sais que en delphi il faut faire lenght(nom_de_ma_chaine)merci d'avance extraire la partie numerique d'une chaine de caractere !! [ par fredericmaill ] Salut @ tous !!J'aimerais savoir comment extraire la partie numerique d'une chaine de caractere ?Je crois me souvenir qu'une fonction qui  permet preg_replace pour chaine de code php [ par JoJo738 ] Enlever chaine caractere [ par stanilou ] Salut, J'ai un petit soucis, je recupere un texte d'un fichier js en javascript (le fichier js est tout simple) et lorsque je met un echo, ca me donne Prendre tout les caractere apres le @ dans une chaine [ par cyberastuces ] Salut tout le mondealors voila comment prendre tout les caracteres apres le @ dans une chaine, c'est pour garder dans une adresse e-mail tout se qui e Probléme de pattern [ par SA7BOOCH ] Bonjour,J'ai un probléme de pattern, je veux découper une chaine de caractére pour faire une recherche sur chaque partie de cette chain contenue des variables et chaine de caractere [ par cacoucatatonique ] salut à tous, c'est pour savoir s'il existe une commande qui donne le nombre de caractere contenue dans une chaine quelconque , laquelle est bien Traitement chaine de caractere [ par paloxicide ] Bonjour tout le monde,Jai une chaine de caractere qui ressemble a ca"toto<br>titi<br>tutu<br>"et je dois en retirer les <br> p Nombre Octec Chaine Caractere [ par josh666 ] Bonjour a tous !Est-il possible de connaitre la taille (en octec) du contenu d'une variable, sachant que le contenu de la variable est une chaine de c


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,421 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.