Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2743 connectés 

  FORUM HardWare.fr
  Programmation

  [PHP] Transformer $var = "Fougères" en $var = "FOUGERES" ???

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Transformer $var = "Fougères" en $var = "FOUGERES" ???

n°48723
shinji
Posté le 25-07-2001 à 10:37:07  profilanswer
 

Tout est dans le titre.
Avec strtoupper j'obtiens FOUGERES avec un accent sur la première occurence de la lettre "E".
Est-ce que c'est possible??

mood
Publicité
Posté le 25-07-2001 à 10:37:07  profilanswer
 

n°48737
maverick20​01
Posté le 25-07-2001 à 11:23:37  profilanswer
 

function oterAccents($chaine) {
  return( strtr( $chaine,
                 "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
                 "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn" ) );
}
 
et ensuite tu passes un strToUpper


---------------
http://eskuel.net/
n°48743
Mara's dad
Yes I can !
Posté le 25-07-2001 à 11:28:29  profilanswer
 

Aie !
J'ai tout comme l'impression que tu va devoir te taper la conversion pour : "âàäéèêëîïôöùûyÿç"  :(  
 
Mais les spécialistes des RegEx pourront surement t'aider !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°48745
Mara's dad
Yes I can !
Posté le 25-07-2001 à 11:30:06  profilanswer
 

Ben, maverick2001, je dis bravo !
 
J'y pense jamais, à cette fonction strtr  :sarcastic:


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
n°48751
shinji
Posté le 25-07-2001 à 11:51:53  profilanswer
 

merci

n°48773
duch
Posté le 25-07-2001 à 12:50:05  profilanswer
 

un petit détail, en typographie, on met les accents sur les majuscules.
 
La raison pour laquelle on en mettait pas jusqu'à présent c'était à cause des machines à écrire (ça aurait fait trop de touches) alors SVP, laissez ces pauvres accents tranquilles :D

n°48774
duch
Posté le 25-07-2001 à 12:54:11  profilanswer
 

mais soit dit en passant, elle est sympa cette fonction strtr, connaissait pas ;)

n°48829
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-07-2001 à 15:18:45  profilanswer
 

duch a écrit a écrit :

un petit détail, en typographie, on met les accents sur les majuscules.
 
La raison pour laquelle on en mettait pas jusqu'à présent c'était à cause des machines à écrire (ça aurait fait trop de touches) alors SVP, laissez ces pauvres accents tranquilles :D  




 
tout à fait d'accord, mais quand on fait par ex une recherche sur un nom en general on vire accents, apostrophes, etc... et tout en majuscule (en interne uniquement) pour que l'utilisateur ne doive pas rechercher avec et sans accents, maj et min, etc...
 
sinon pour la belle liste d'accents il en manque : ý ÿ (le premier est utilisé en turc et le second est parfois utilisé en néerlandais à la place de ij)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°48886
maverick20​01
Posté le 25-07-2001 à 20:35:19  profilanswer
 

J'ai jms dit que la liste des accents était exhaustive... A vous de la compléter selon vos besoin :)
A mon avis, strstr est moins lourde qu'une regex, dc + rapide... Tt dépend de ce qu'on veut en faire


---------------
http://eskuel.net/
n°48936
FLY LM
Posté le 25-07-2001 à 23:48:29  profilanswer
 

maverick2001 a écrit a écrit :

function oterAccents($chaine) {
  return( strtr( $chaine,
                 "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
                 "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn" ) );
}
 
et ensuite tu passes un strToUpper  




 
Personnellement, je ferai le contraire :
 
1- on passe la variable en MAJUSCULE (strToUpper).
2- on traite la variable :
 
function oterAccents($chaine) {  
 return( strtr( $chaine,  
                "ÀÁÂÃÄÅÒÓÔÕÖÈÉÊËÇÌÍÎÏÙÚÛÜÑ",  
                "AAAAAAOOOOOEEEECIIIIUUUUN" ) );  
}  
-> Y-a déjà moins de cas à traiter non ??
 
Quand à savoir si c'est plus rapide qu'une Regexp... Pourquoi dire qu'une Regexp serait moins rapide ???

 

[edtdd]--Message édité par fly lm--[/edtdd]

mood
Publicité
Posté le 25-07-2001 à 23:48:29  profilanswer
 

n°48943
maverick20​01
Posté le 26-07-2001 à 01:14:39  profilanswer
 

Y'a pas qu'une seule méthode pour faire ça, chacun son truc.
 
Pour ce qui est de la rapidité, à mon avis, ça doit faire comme entre un ereg_replace et un str_replace.... Just 4 fun, compare un remplacement bateau et le temps que ca met sur un gros fichier texte. Avec ereg_replce, t'as toutes les chances d'avoir un 'maximum execution time'.
 
A toi de voir :)


---------------
http://eskuel.net/
n°48991
FLY LM
Posté le 26-07-2001 à 10:14:39  profilanswer
 

maverick2001 a écrit a écrit :

Y'a pas qu'une seule méthode pour faire ça, chacun son truc.
 
Pour ce qui est de la rapidité, à mon avis, ça doit faire comme entre un ereg_replace et un str_replace.... Just 4 fun, compare un remplacement bateau et le temps que ca met sur un gros fichier texte. Avec ereg_replce, t'as toutes les chances d'avoir un 'maximum execution time'.
 
A toi de voir :)  




 
OK, j'ai testé, effectivement c'est plus long avec la REGEXP...
 
Temps moyen pour la strstr : 0.0005 sec
Temps moyen pour la REGEXP : 0.0020 sec
 
Ce temps prends en compte le calcul du temps, mais bon il est le même pour les deux méthodes.
 
$pattern = array("'À'","'Á'","'Â'","'Ã'","'
Ä'","'Å'","'à'","'á'","'â'","'
ã'","'ä'","'å'","'Ò'","'Ó'","'
Ô'","'Õ'","'Ö'","'Ø'","'ò'","'
ó'","'ô'","'õ'","'ö'","'ø'","'
È'","'É'","'Ê'","'Ë'","'è'","'
é'","'ê'","'ë'","'Ç'","'ç'","'
Ì'","'Í'","'Î'","'Ï'","'ì'","'
í'","'î'","'ï'","'Ù'","'Ú'","'
Û'","'Ü'","'ù'","'ú'","'û'","'
ü'","'ÿ'","'Ñ'","'ñ'" );
$replace = 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" );
 
$new = preg_replace($pattern,$replace,$var);
echo strToupper($new);
 
 
Comme quoi les REGEXP ne sont pas adaptées à ce cas...
 
Par ailleurs, j'ai dit une connerie hier soir, il ne faut pas faire le strtoupper() afin d'économiser des caractères de comparaison/substitution commme je l'avait dit. Le strToupper()  ne converti pas les caractères accentués en leur équivalent majuscule...
 
@+

n°49011
Sh@rdar
Ex-PhPéteur
Posté le 26-07-2001 à 10:54:25  profilanswer
 

en plus les regexp passent par le moteur d'expression régulières de PhP et sont donc puissantes mais en général (et j'ai bien dit en général) plus lentes


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [PHP] Transformer $var = "Fougères" en $var = "FOUGERES" ???

 

Sujets relatifs
PHP et variable global (ou autres solutions)[PHP] Calculer a partir de constantes ?
PHP/MySql[PHP / HTML ] Formulaire dans une frame...
[PHP] Lecture de fichiers[PHP] récuper un jpeg et l'afficher en hexa..?
[PHP] Problème avec require ![PHP/MySQL] Récupérer des valeurs à injecter ds 1 fichier template
PHP et script d'upload ftp[INSTALLATION EASY PHP] ==> WiN2K == ??????
Plus de sujets relatifs à : [PHP] Transformer $var = "Fougères" en $var = "FOUGERES" ???


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR