Expression réguliere ereg()

Expression réguliere ereg() - PHP - Programmation

Marsh Posté le 22-06-2006 à 14:22:13    

Bonjour,
 
Voila, je cherche à créer, sans succés une petite fonction.  
Elle prends en paramettre une chaine de caractere de ce type:
 

Code :
  1. $etiquette = "etiquettes/Vallée de la loire/clos d'Ajou/maubuisson.jpg"


 
Et elle me redonne une chaine de caractere qui sera le chemin de l'image maubuisson.jpg, soit:
 

Code :
  1. $etiquette = "etiquettes/Vallee_de_la_loire/clos_d_Ajou/maubuisson.jpg"


 
En faites, je cherche à changer tout ce qui n'est pas compris dans la table ASCII entre a et z; A et Z; 1 et 9 en _
 
Mais j'ai un peu de mal à confectionner mon expression réguliere.
 
Merci.
 
Alexandre

Reply

Marsh Posté le 22-06-2006 à 14:22:13   

Reply

Marsh Posté le 22-06-2006 à 14:41:30    

preg_replace avec du [^a-zA-Z1-9]
 
?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 22-06-2006 à 14:53:44    

Mieux vaut utiliser str_replace qui sera beaucoup plus rapide et moins gourmand qu'une expression régulière dans ton cas.
 
Sinon dans le cas de preg_replace je ferais :
preg_replace('#[^\w./]#', '_', $texte)

Reply

Marsh Posté le 22-06-2006 à 15:04:44    

afbilou a écrit :

Mieux vaut utiliser str_replace qui sera beaucoup plus rapide et moins gourmand qu'une expression régulière dans ton cas.
 
Sinon dans le cas de preg_replace je ferais :
preg_replace('#[^\w./]#', '_', $texte)


 
Merci beaucoup pour vos reponses, effectivement dans un premier temps j'avais pensé à un str-replace mais ca va etre beaucoup trop complexe à gerer. Il faut imaginer que c'est le visiteur qui fait les rubriques donc il peut y mettre tout les caracteres avec accent, les !"£$%^&*(, etc...  
 
Je ne voudrais pas qu'il me foute en l'air le serveur.
 
Donc c'est pour ceci que je voulais remplacer tt ce qui n'est pas compris entre a-z; A-Z; 1-9 par _
 
Maintenant sielfried me suggere preg_replace avec du [^a-zA-Z1-9], il ne semble pas sur de lui, qqn d'autre pourrait-il confirmer.  
 
Merci

Reply

Marsh Posté le 22-06-2006 à 15:27:02    

Ben cette regexp catche tous les caractères sauf ceux qui vont de a à z, de A à Z et de 1 à 9. J'ai pas mis \w vu que t'as pas précisé si ça incluait le zéro, mais je suppose que oui, donc autant remplacer tout ça par \w (par contre pourquoi un point après \w, afbilou ?).
 
Je vois pas trop comment afbilou imagine le truc sur autant de caractères avec un str_replace, par contre (m'enfin je suis pas très en forme aujourd'hui... [:spamafote])


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 22-06-2006 à 15:41:46    

Le point c'est pour ne pas remplacer le "." de l'extesion du fichier a la fin de la chaine :p

Reply

Marsh Posté le 22-06-2006 à 16:26:23    

Okey, merci beaucoup. Je crois que je vais explure le "." et lui envoyer seulement:
 
$etiquette = "etiquettes/Vallée de la loire/clos d'Ajou/maubuisson"
 
Parce que si un utilisateur me met un . dans le nom de son image ou repertoire, ca va faire du degat.
 
Merci, je test tout ca ce soir.

Reply

Sujets relatifs:

Leave a Replay

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