Pouvez vous m'expliquer cette fonction de "basename"

Résolu
cs_caviar Messages postés 329 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 29 mars 2015 - 18 avril 2007 à 16:18
cs_caviar Messages postés 329 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 29 mars 2015 - 23 avril 2007 à 14:18
Salut
j'ai trouvé cette fonction sur php.net rubrique basename. elle fonctionne mais j'ai du mal à comprendre le motif preg_replace utilisé...et vu que j'ai pas envie de mourir idiot :) et qu'on retiens que ce qu'on comprends... je me demandais si une âme charitable pourrait m'expliquer son fonctionnement

//renvoie le nom du fichier quelque soit le séparateur de dossier utilisé \ ou /
// fonctionne donc sous linux et win
function get_basename ($fichier) {
  $basename = preg_replace( '/^.+[\\\\\\/]/', '', $fichier );
  return $basename ;
}

mercii !
@+

5 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
20 avril 2007 à 12:19
Salut,

\\ correspond a un \ dans php... il faut un \\ dan une regexp pour correspondre a un \ dans ton texte ainsi :

\\\\ correspond a la recherche d'un \

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
19 avril 2007 à 02:31
Salut,

les expressions regulieres :) quelle joie :

^ t'indique que c'est le debut de ta chaine ($ la fin)
. c'est n'importe quel char sauf \r et \n
+ c'est au moins une fois
[abc] c'est l'un des caractere a, b ou c
\\ c'est le caractere \
donc '\\\\' c'est \
et \\/ c'est /

en gros ca te supprime tout ce que tu as devant le nom du fichier dans une adresse de fichier (tout jusqu'au le dernier /)

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Mon site (articles sur la programmation et programmes)
0
kishkaya Messages postés 365 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 17 avril 2008
19 avril 2007 à 10:09
Regarde les fonctions du genre basename() sur php.net.

 je crois que basename() fait la même chose que ta fonction.

_Marikou
0
cs_caviar Messages postés 329 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 29 mars 2015 2
20 avril 2007 à 09:49
    merci pour vos réponses...
effectivement c'est bien ce que je voulais faire (récupérer juste le nom dans un chemin)... j'ai essayé la fonction basename mais sur certains formulaires envoyés depuis PC, le serveur linux ne reconaissait pas les antislash et je me retrouvais avec tout le chemin concatainé comme nom de fichier (bug de la fonction basename je pense) ...du coup cette fonction marche :)
 coucou747 tu dis

\\ c'est le caractere \
donc '\\\\' c'est \

-> Pourquoi ? si \\ = \ alors \\\\ devrait être = à \\ non ?

et donc \\\\\\/ devrai correspondre à \\\ et un / tout seul ?
 c'est ça qui me chiffone ... j'arrive pas  à comprendre leur histoire

enfin la fonction marche bien ... mais je sais pas comment ...lol
@++
0

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

Posez votre question
cs_caviar Messages postés 329 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 29 mars 2015 2
23 avril 2007 à 14:18
    lol
eh ben !
moi je dis heureusement qu'on recherce pas un \\\\
^^ ^^ ^^ ^^
merci à toi
@+
0
Rejoignez-nous