Changer le nom de fichier que contient une variable avant le point
cs_romega
Messages postés32Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention20 avril 2008
-
20 nov. 2007 à 13:31
cs_romega
Messages postés32Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention20 avril 2008
-
23 nov. 2007 à 18:09
Salut a tous,
J'ai une variable qui contient le nom d'un fichier (par exemple $fichier = nomdefichier.jpg;) et j'aimerais pouvoir faire des modification sur le nom du fichier avant le point et garder seuleument les trois premieres lettres, par exemple renommer en nom1.jpg. Je suppose qu'il y a une fonction pour faire ca mais laquelle et comment fonctionne t-elle ?
Merci d'avance
cs_romega
Messages postés32Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention20 avril 2008 20 nov. 2007 à 15:28
Merci
Super pour une partie du problème qui est de tronquer le nom du fichier mais il faudrait que j'isole le .jpg ou .jpeg ou .gif etc... et faudrait peut être une autre fonction dont j'ignore le nom
cs_romega
Messages postés32Date d'inscriptionjeudi 8 novembre 2007StatutMembreDernière intervention20 avril 2008 20 nov. 2007 à 15:48
Merci, est ce qu'une petite explication c'est trop demander ? j'aime bien comprendre ce que je fais ou sinon quelques mots clés que je fasse une petite recherche ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Allez... Quelques explications, parce que sinon, j'avoue qu'avec la doc, pour piger l'expression régulière, c'est pas gagné.
` : délimiteur de l'expression régulière proprement dite. Après le deuxième délimiteur (celui de fin, donc) on peut trouver des options de recherche (comme par exemple la sensibilité ou non à la casse).
.* : n'importe quel caractère répété un nombre de fois non défini.
\. : caractère point. Le point étant un caractère spécial pour les regex, il faut l'échapper.
( ) : masque de capture. Ce qui correspond à ce qui y est capturé sera accessible par référence. On en reparle après.
[ ] : définie une classe de caractères. C'est en quelque sorte un filtre : on ne prend que les caractères qui se trouvent dans cette classe. Ou pas : si ^ est utilisé comme premier caractère de la classe, on ne cherche que des caractères qui NE SONT PAS dans cette classe.
donc : ([^\.]*) signifie qu'on capture (parenthèses) toutes les chaines de caractères qui ne contiennent pas de point (crochets, ^ et caractère point \.) et contenant un nombre non défini de caractères (astérisque)
$ : indique que c'est la fin de la chaine
Le deuxième argument est la chaine de remplacement, par laquelle on remplace TOUTE LA CHAINE dans laquelle on fait la recherche.
$1 indique une référence. Il s'agit d'une référence au numéro du masque capturé (avec des parenthèses). $0 correspond à toute la chaine, $1 au premier masque, etc.
Ainsi, l'expression régulière capture la dernière "sous-chaine" qui correspond aux critères suivants :
- ne contient pas de point
- est précédée d'un point
Remplacer toute la chaine par ce qu'on capture renvoit donc l'extension.