Changer le nom de fichier que contient une variable avant le point

cs_romega Messages postés 32 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 20 avril 2008 - 20 nov. 2007 à 13:31
cs_romega Messages postés 32 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 20 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

6 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
20 nov. 2007 à 13:54
Salut,

http://fr.php.net/manual/fr/function.substr.php

D'une manière générale, la doc de php donne ce genre de réponse ;)
0
cs_romega Messages postés 32 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 20 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
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
20 nov. 2007 à 15:36
Re,

Pour isoler l'extension, une petite expression régulière :
$ext = preg_replace('`.*\.([^\.]*)$`', '$1', $fichier);
0
cs_romega Messages postés 32 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 20 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 ...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
20 nov. 2007 à 16:03
Ben...

Pour le fonctionnement de la fonction : http://www.php.net/manual/fr/function.preg-replace.php

Pour l'expression régulière : http://www.php.net/manual/fr/reference.pcre.pattern.syntax.php

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.
0
cs_romega Messages postés 32 Date d'inscription jeudi 8 novembre 2007 Statut Membre Dernière intervention 20 avril 2008
23 nov. 2007 à 18:09
Vraiment, un grand merci
0
Rejoignez-nous