Pouvez vous m'expliquer cette fonction de "basename" [Résolu]

Signaler
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
-
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
-
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

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
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)
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
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)
Messages postés
365
Date d'inscription
samedi 26 juin 2004
Statut
Membre
Dernière intervention
17 avril 2008

Regarde les fonctions du genre basename() sur php.net.

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

_Marikou
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
3
    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
@++
Messages postés
329
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
29 mars 2015
3
    lol
eh ben !
moi je dis heureusement qu'on recherce pas un \\\\
^^ ^^ ^^ ^^
merci à toi
@+