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

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

Marsh Posté le 25-07-2001 à 10:37:07    

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

Reply

Marsh Posté le 25-07-2001 à 10:37:07   

Reply

Marsh Posté le 25-07-2001 à 11:23:37    

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


---------------
http://eskuel.net/
Reply

Marsh Posté le 25-07-2001 à 11:28:29    

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é.
Reply

Marsh Posté le 25-07-2001 à 11:30:06    

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


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 25-07-2001 à 11:51:53    

merci

Reply

Marsh Posté le 25-07-2001 à 12:50:05    

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

Reply

Marsh Posté le 25-07-2001 à 12:54:11    

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

Reply

Marsh Posté le 25-07-2001 à 15:18:45    

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
Reply

Marsh Posté le 25-07-2001 à 20:35:19    

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/
Reply

Marsh Posté le 25-07-2001 à 23:48:29    

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]

Reply

Marsh Posté le 25-07-2001 à 23:48:29   

Reply

Marsh Posté le 26-07-2001 à 01:14:39    

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/
Reply

Marsh Posté le 26-07-2001 à 10:14:39    

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

Reply

Marsh Posté le 26-07-2001 à 10:54:25    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed