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

 


Dernière réponse
Sujet : [PHP] Transformer $var = "Fougères" en $var = "FOUGERES" ???
Sh@rdar 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

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Sh@rdar 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
FLY LM

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...
 
@+

maverick2001 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 :)
FLY LM

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]

maverick2001 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
antp

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)

duch mais soit dit en passant, elle est sympa cette fonction strtr, connaissait pas ;)
duch 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
shinji merci
Mara's dad Ben, maverick2001, je dis bravo !
 
J'y pense jamais, à cette fonction strtr  :sarcastic:
Mara's dad 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 !
maverick2001 function oterAccents($chaine) {
  return( strtr( $chaine,
                 "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ",
                 "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn" ) );
}
 
et ensuite tu passes un strToUpper
shinji 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??

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)