skip to main | skip to sidebar
Code 18
Manuel du savoir-faire à l'usage des geeks et des curieux
RSS
  • Accueil
  • Le web au Québec
  • Liens
  • Twitter
  • Facebook
  • À propos

lundi 4 mai 2009

Obtenir l'extension d'un fichier

Publié par Infinite Loop, à 21 h 08 1 commentaire

Dans de nombreux exemples de code, j'ai vu des développeurs PHP (incluant moi-même, pas plus tard que dans mon exemple d'hier) utiliser un petit raccourci classique pour obtenir l'extension d'un fichier :

$file = 'infinite-loop.jpg';
$extension = end(explode('.', $file));
echo $extension; // jpg
La combinaison des appels de end() et explode() permet d'utiliser le point comme séparateur de chaîne et de diviser le nom du fichier en sous-ensemble ("infinite-loop" et "jpg") retourné en tant qu'array qui sera passé en entrée à end() qui à son tour retournera le dernier élément de l'array, soit "jpg".

C'est pratique car on peut utiliser le même explode pour récupérer la première partie, soit "infinite-loop" en utilisant la fonction current() qui retourne le premier élément de l'array. Ça fonctionne bien quand on a seulement le nom du fichier mais imaginez à la place qu'on a l'exemple suivant :
$path = '/home/code18/infinite-loop.jpg';
$filename = current(explode('.', $path));
Ce que contiendrait $filename serait "home/code18/infinite-loop", incluant le chemin complet du fichier. Pour contourner ceci, on doit faire appel à basename() :
$path = '/home/code18/infinite-loop.jpg';
$file = basename($path); // infinite-loop.jpg
$filename = current(explode('.', $file)); // infinite-loop
$ext = end(explode('.', $file)); // jpg
On obtient le nom du fichier, le nom sans extension et son extension mais on n'a pas encore isolé et extrait le répertoire. Un tour de magie :
# /home/code18/
echo str_replace($file, '', $path);

# ou sans se compliquer la vie :

# /home/code18 (sans le / de la fin)
echo dirname($path);
La solution

Pourtant, il y a un moyen très simple de faire tout cela d'un seul coup, avec la fonction built-in de PHP pathinfo() :
$path = 'http://www.google.ca/intl/en_ca/images/logo.gif';
$info = pathinfo($path);

echo $info['dirname']; // http://www.google.ca/intl/en_ca/images
echo $info['basename']; // logo.gif
echo $info['extension']; // gif
echo $info['filename']; // gif


Tags: PHP

1 réponse à "Obtenir l'extension d'un fichier"

  1. Julien a dit...
    12 mai 2009 à 22 h 17

    Rahlala, comme quoi on ne lit pas suffisamment la doc, je ne connaissais pas du tout cette fonction... Le nombre de fois où je me suis tapé ça à la main :s j'ai honte...


Publier un commentaire

Message plus récent Messages plus anciens Accueil
S'abonner à : Publier des commentaires (Atom)
    Suivre @code18 sur Twitter

    Catégories

    • Apache (21)
    • Citations (167)
    • Club Vidéo (24)
    • Coffre à outils (56)
    • CSS (8)
    • Curiosités (117)
    • Design Pattern (2)
    • Drupal (8)
    • Easter Eggs (22)
    • Extensions Firefox (20)
    • GIMP (7)
    • Histoire (21)
    • HTML (32)
    • Humour (57)
    • Intégration (34)
    • iPod (12)
    • JavaScript (110)
    • Jeu de combat (6)
    • Le coin du geek (128)
    • Liens (12)
    • Linux (56)
    • Livres (78)
    • Lois et principes (46)
    • Marché des saveurs (26)
    • Mathématique (18)
    • Mobile (5)
    • Montréal (32)
    • Musique (112)
    • Pancartes et écriteaux (16)
    • Perl (8)
    • Pérou (1)
    • PHP (130)
    • PostgreSQL (44)
    • Programmation (105)
    • Saviez-vous que (55)
    • Sécurité (22)
    • SEO (5)
    • SQL Server (22)
    • Vieilles publicités (6)
    • Virtualisation (8)
    • Voyages (1)
    • Zend Framework (26)

    Divers

    Archives

    • ►  2015 (6)
      • ►  août 2015 (1)
      • ►  juillet 2015 (1)
      • ►  février 2015 (3)
      • ►  janvier 2015 (1)
    • ►  2014 (8)
      • ►  décembre 2014 (1)
      • ►  novembre 2014 (1)
      • ►  octobre 2014 (1)
      • ►  août 2014 (2)
      • ►  juillet 2014 (2)
      • ►  janvier 2014 (1)
    • ►  2013 (53)
      • ►  décembre 2013 (2)
      • ►  novembre 2013 (1)
      • ►  octobre 2013 (3)
      • ►  septembre 2013 (2)
      • ►  août 2013 (5)
      • ►  juillet 2013 (3)
      • ►  juin 2013 (5)
      • ►  mai 2013 (3)
      • ►  avril 2013 (7)
      • ►  mars 2013 (7)
      • ►  février 2013 (11)
      • ►  janvier 2013 (4)
    • ►  2012 (105)
      • ►  décembre 2012 (8)
      • ►  novembre 2012 (5)
      • ►  octobre 2012 (4)
      • ►  septembre 2012 (1)
      • ►  août 2012 (8)
      • ►  juillet 2012 (7)
      • ►  juin 2012 (7)
      • ►  mai 2012 (10)
      • ►  avril 2012 (13)
      • ►  mars 2012 (15)
      • ►  février 2012 (15)
      • ►  janvier 2012 (12)
    • ►  2011 (146)
      • ►  décembre 2011 (14)
      • ►  novembre 2011 (11)
      • ►  octobre 2011 (12)
      • ►  septembre 2011 (13)
      • ►  août 2011 (15)
      • ►  juillet 2011 (17)
      • ►  juin 2011 (18)
      • ►  mai 2011 (15)
      • ►  avril 2011 (9)
      • ►  mars 2011 (7)
      • ►  février 2011 (3)
      • ►  janvier 2011 (12)
    • ►  2010 (398)
      • ►  décembre 2010 (29)
      • ►  novembre 2010 (28)
      • ►  octobre 2010 (32)
      • ►  septembre 2010 (34)
      • ►  août 2010 (22)
      • ►  juillet 2010 (35)
      • ►  juin 2010 (42)
      • ►  mai 2010 (36)
      • ►  avril 2010 (37)
      • ►  mars 2010 (34)
      • ►  février 2010 (32)
      • ►  janvier 2010 (37)
    • ▼  2009 (430)
      • ►  décembre 2009 (32)
      • ►  novembre 2009 (34)
      • ►  octobre 2009 (33)
      • ►  septembre 2009 (37)
      • ►  août 2009 (37)
      • ►  juillet 2009 (39)
      • ►  juin 2009 (38)
      • ▼  mai 2009 (37)
        • Obtenir le Page Rank Google en PHP ou Perl
        • Citation no. 32 sur Windows
        • Google Talk chatback badge
        • Images volantes en JavaScript
        • ASP vs PHP
        • Intervalles de dates sous PostgreSQL et SQL Server
        • Ordre de chargement avec Prototype
        • Pouvez-vous lire ceci ?
        • Service ReCaptcha en français
        • Citation no. 31 sur la lune
        • Google killers
        • Configurer Zend_Tool en CLI
        • Quelques logos intéressants
        • Créer un WSDL facilement avec Zend Framework
        • XSS sur Wikio... et Archambault Musique
        • Encryption de données en PHP
        • Virtualiser les fureteurs avec Xenocode
        • Traductions pour Uploadify
        • Citation no. 30 sur la force
        • ASCII Art avec GIMP
        • Fonction JavaScript à paramètres variables
        • The Mythical Man-Month - Loi de Brooks
        • Fichier en attachement avec Zend_Mail
        • Konami Code sur jQuery et Facebook
        • Star Trek
        • 3 façons de lire du XML en PHP
        • Citation no. 29 sur l'infini
        • Déboguer avec FirePHP
        • 99 bouteilles de bière
        • Étude de cas Zend Solutions
        • Zend_Service_Twitter
        • Devinette mathématique classique
        • Obtenir l'extension d'un fichier
        • Récupérer une image sur Amazon avec Zend Framework
        • Citation no. 28 sur un jour de travail productif
        • Modifier l'entête Server d'Apache
        • Contrôler le téléchargement d'un fichier
      • ►  avril 2009 (35)
      • ►  mars 2009 (37)
      • ►  février 2009 (32)
      • ►  janvier 2009 (39)
    • ►  2008 (84)
      • ►  décembre 2008 (34)
      • ►  novembre 2008 (39)
      • ►  octobre 2008 (11)

    Abonnés

Copyright © All Rights Reserved. Code 18 | Converted into Blogger Templates by Theme Craft