FONCTION DE CONVERSION D'UNE CHAINE DE CARACTÈRE VERS UN TYPAGE UNIX
juki_webmaster
Messages postés947Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 avril 2008
-
23 janv. 2007 à 14:17
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 2009
-
24 mai 2008 à 11:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 24 mai 2008 à 11:13
merci :)
guewini
Messages postés9Date d'inscriptionvendredi 1 juin 2007StatutMembreDernière intervention27 novembre 2008 23 mai 2008 à 16:42
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és1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 22 mai 2008 à 23:01
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és1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 1 juin 2007 à 10:38
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és9Date d'inscriptionvendredi 1 juin 2007StatutMembreDernière intervention27 novembre 2008 1 juin 2007 à 09:55
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_'
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 17 mai 2007 à 21:02
Oui dans ce cas là preg_replace reste la solution la moins prise de tête... .. . ;o)
@ tchaOo°
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 17 mai 2007 à 15:45
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 !)
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 25 janv. 2007 à 13:49
comme garfield90... le tout dans un str_replace() (sauf pour la dernière expression)
@ tchaOo°
cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009 24 janv. 2007 à 14:21
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
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 23 janv. 2007 à 14:19
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 :)
juki_webmaster
Messages postés947Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 avril 20083 23 janv. 2007 à 14:17
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 :)
24 mai 2008 à 11:13
23 mai 2008 à 16:42
22 mai 2008 à 23:01
@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 ! (:
1 juin 2007 à 10:38
Oué ! pas mal !, surtout que tu en remplace plus que moi (par les bonnes correspondances) apparement là :)
1 juin 2007 à 09:55
$chaine = strtr($chaine, "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ -'", "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn___");
inconvénient : c'est caractères par caractère donc le '&' n'est pas remplacable par '_and_'
17 mai 2007 à 21:02
@ tchaOo°
17 mai 2007 à 15:45
25 janv. 2007 à 13:49
@ tchaOo°
24 janv. 2007 à 14:21
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
23 janv. 2007 à 14:19
"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 :)
23 janv. 2007 à 14:17
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 :)