IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Fonctions ou classe pour extraire données de fichier


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations forums :
    Inscription : Août 2012
    Messages : 37
    Points : 21
    Points
    21
    Par défaut Fonctions ou classe pour extraire données de fichier
    Salut à toutes et à tous!

    Je vous explique rapidement mon petit problème. J'aimerai extraire toutes les informations d'un fichier. En l'occurence il s'agit d'un fichier de police.ttf ou .otf.
    Je voudrais pouvoir récupérer ce que l'on peut voir par exemple lorsque sous windows on fait clic droit sur le fichier puis propriétés. Là on se retrouve avec tout un tas d'infos utile sur le fichier.

    Ma question est simple, existe t-il une fonction ou une classe toute prête pour ce genre de manipulation? J'ai bien trouvé une classe mais je n'arrive pas à l'exploiter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    SplFileInfo {
    /* Methods */
    public __construct ( string $file_name )
    public int getATime ( void )
    public string getBasename ([ string $suffix ] )
    public int getCTime ( void )
    public string getExtension ( void )
    public SplFileInfo getFileInfo ([ string $class_name ] )
    public string getFilename ( void )
    public int getGroup ( void )
    public int getInode ( void )
    public string getLinkTarget ( void )
    public int getMTime ( void )
    public int getOwner ( void )
    public string getPath ( void )
    public SplFileInfo getPathInfo ([ string $class_name ] )
    public string getPathname ( void )
    public int getPerms ( void )
    public string getRealPath ( void )
    public int getSize ( void )
    public string getType ( void )
    public bool isDir ( void )
    public bool isExecutable ( void )
    public bool isFile ( void )
    public bool isLink ( void )
    public bool isReadable ( void )
    public bool isWritable ( void )
    public SplFileObject openFile ([ string $open_mode = r [, bool $use_include_path = false [, resource $context = NULL ]]] )
    public void setFileClass ([ string $class_name ] )
    public void setInfoClass ([ string $class_name ] )
    public void __toString ( void )
    }
    Source de ce code :
    http://www.php.net/manual/en/class.splfileinfo.php

    Merci d'avance pour vos lumières!

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    La doc est très claire sur le sujet , quelles difficultés rencontre tu avec cette classe ? On peut voir ce que tu as essayé de faire ? quel sont les message d'erreurs ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations forums :
    Inscription : Août 2012
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    salut Grunk et merci

    En réalité je débute en POO, du coup je dois consolider mes bases. C'est la raison pour laquelle je ne vois pas très bien comment construire avec cette class.

    Voici ce que j'ai tenter de faire, mais je me suis arrêter avant d'aller plus loin voyant que je partais un peu trop dans tous les sens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <?php
    class SplFileInfo {
    public function __construct ( string $file_name )
    public function int getATime ( void )
    public function string getBasename ([ string $suffix ] )
    public function int getCTime ( void )
    public function string getExtension ( void )
    public function SplFileInfo getFileInfo ([ string $class_name ] )
    public function string getFilename ( void )
    public function int getGroup ( void )
    public function int getInode ( void )
    public function string getLinkTarget ( void )
    public function int getMTime ( void )
    public function int getOwner ( void )
    public function string getPath ( void )
    public function SplFileInfo getPathInfo ([ string $class_name ] )
    public function string getPathname ( void )
    public function int getPerms ( void )
    public function string getRealPath ( void )
    public function int getSize ( void )
    public function string getType ( void )
    public function bool isDir ( void )
    public function bool isExecutable ( void )
    public function bool isFile ( void )
    public function bool isLink ( void )
    public function bool isReadable ( void )
    public function bool isWritable ( void )
    public function SplFileObject openFile ([ string $open_mode = r [, bool $use_include_path = false [, resource $context = NULL ]]] )
    public function void setFileClass ([ string $class_name ] )
    public function void setInfoClass ([ string $class_name ] )
    public function void __toString ( void )
    }
     
     
    $mon_fichier = 'dossier/fichier.ttf';
     
    //Ici l'utilisation de la class pour extraire les données de propriétés et descriptions du fichier
     
    ?>
    Je ne vois pas comment l'adapter et comment m'en servir

    De toute façon il faut que je continu mon apprentissage du POO mais j'aurai été content de pouvoir utiliser une class pour ce que je veux faire plustôt qu'une série de fonctions.

    Merci beaucoup d'avance!

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Le code que tu vois sur la page de la classe , c'est le prototype de la classe (ce qu'elle contient) tu n'as pas besoin de le réecrire.

    Il suffit de cliquer sur une des méthodes listées en dessous pour avoir un exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $monfichier = 'mafont.ttf'; //Fichier à utiliser
    $fileInfo = new SplFileInfo($monfichier); // création d'un objet utilisant ce fichier
    if ($fileInfo->isFile()) { // Est ce que $monFichier est bien un fichier
        echo $fileInfo->getSize(); // Afficher sa taille
        echo $fileInfo->getExtension(); // Affiche son extension
    }
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations forums :
    Inscription : Août 2012
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Je suis désolé grunk mais je nevois toujours pas.
    Concrètement, je veut récupérer les infos de ce fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    $req = $DB->query('SELECT * FROM fonts');
     
    $monfichier = 'fonts/'.$req[1]->file.'';
     
    //Quel code pour afficher les infos?
    ?>
    Est-ce que je dois déclarer la class plus haut et ensuite l'uitiliser? Je vois pas comment faire fonctionner ce prototype.

    Merci de ton aide

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Ba y'a un exemple complet dans mon post précédent , je peux pas faire plus clair :/
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations forums :
    Inscription : Août 2012
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Ben j'ai bêtement copié ton code et ça n'a pas fonctionné.
    J'ai ensuite introduit la classe et même résultat.
    Mais c'est juste parce que je ne sais pas m'en servir, j'ai fais ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <?php
     
    SplFileInfo {
    public function __construct ( string $file_name )
    public function int getATime ( void )
    public function string getBasename ([ string $suffix ] )
    public function int getCTime ( void )
    public function string getExtension ( void )
    public function SplFileInfo getFileInfo ([ string $class_name ] )
    public function string getFilename ( void )
    public function int getGroup ( void )
    public function int getInode ( void )
    public function string getLinkTarget ( void )
    public function int getMTime ( void )
    public function int getOwner ( void )
    public function string getPath ( void )
    public function SplFileInfo getPathInfo ([ string $class_name ] )
    public function string getPathname ( void )
    public function int getPerms ( void )
    public function string getRealPath ( void )
    public function int getSize ( void )
    public function string getType ( void )
    public function bool isDir ( void )
    public function bool isExecutable ( void )
    public function bool isFile ( void )
    public function bool isLink ( void )
    public function bool isReadable ( void )
    public function bool isWritable ( void )
    public function SplFileObject openFile ([ string $open_mode = r [, bool $use_include_path = false [, resource $context = NULL ]]] )
    public function void setFileClass ([ string $class_name ] )
    public function void setInfoClass ([ string $class_name ] )
    public function void __toString ( void )
     
     
    $monfichier = 'fonts/BankGothicBT-Medium.otf'; //Fichier à utiliser
    $fileInfo = new SplFileInfo($monfichier); // création d'un objet utilisant ce fichier
    if ($fileInfo->isFile()) { // Est ce que $monFichier est bien un fichier
        echo $info->getSize(); // Afficher sa taille
        echo $info->getExtension(); // Affiche son extension
    }
    ?>

  8. #8
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Comme je te l'ai déjà dis ca ne sert à rien de copier la classe , elle est intégré à PHP.

    j'ai bêtement copié ton code et ça n'a pas fonctionné.
    Message d'erreur ?
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations forums :
    Inscription : Août 2012
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    Ah d'accord, je n'avais pas compris qu'elle était intégrée.
    Bon du coup ça simplifie la précédure par contre j'ai donc une erreur en copiant simplement ton code qui dit :

    SCREAM: Error suppression ignored for
    ( ! ) Notice: Undefined variable: info in C:\wamp\www\site\file_description.php on line 5
    Call Stack
    # Time Memory Function Location
    1 0.0022 365944 {main}( ) ..\file_description.php:0

    -----------------

    SCREAM: Error suppression ignored for
    ( ! ) Fatal error: Call to a member function getSize() on a non-object in C:\wamp\www\site\file_description.php on line 5
    Call Stack
    # Time Memory Function Location
    1 0.0022 365944 {main}( ) ..\file_description.php:0


    ----------------

    Désolé c'est pas très propre comme réponse.
    Donc j'ai 2 erreurs. Y a t-il une extension php qu'il faudrait activé peut être?

  10. #10
    Membre régulier Avatar de moogli
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 58
    Points : 102
    Points
    102
    Par défaut
    salut,

    au pif d'après le dernier code tu utilise $info (qui n'existe pas php a raison) au lieu de $fileInfo


    @+

  11. #11
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Chine

    Informations forums :
    Inscription : Août 2012
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    rolàlà!

    Exactement moogli, d'où sort la v ariable $info qui n'est jamais déclaré???
    J'aurai dû le voir c'était quand même plutôt gros

    Heureusement que tu étais là, un grand merci à toi!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/09/2014, 15h28
  2. Réponses: 4
    Dernier message: 11/09/2014, 13h40
  3. Réponses: 6
    Dernier message: 07/03/2009, 19h23
  4. Commande AWK ou SED pour modification données dans fichier
    Par desbrandesq dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 29/01/2008, 17h56
  5. [DOM] Classe pour modification d'un fichier XML
    Par Dookie dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 11/10/2007, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo