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 :

extraire des éléments d'une chaine définie en regex


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 69
    Par défaut extraire des éléments d'une chaine définie en regex
    Bonjour, je souhaiterai extraire certains éléments d'un lien de fichier.

    Je m'explique : j'ai ces différents liens en recupérant la liste d'un dossier et/ou sous dossier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    D:/ARCHIVE/2003/12345_blablabla/document.pdf
    Je souhaiterai extraire ce lien pour remplir une base de données.

    La base se constitue de 7 éléments :
    ID, ANNEE, CODE, TITRE, NOM, EXT, lien complet

    Dans notre exemple je voudrais récupérer les éléments ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ID (auto)
    ANNEE : 2003
    CODE : 12345 (5 chiffres)
    TITRE : blablabla (n caractères)
    NOM : document (n caractères)
    EXT : .pdf
    lien complet : D:/ARCHIVE/2003/12345_blablabla/document.pdf
    Pour lister le dossier, j'utilise :

    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
    <?php
     
    //permet de lister un répertoire + sous répertoires
    function lister($chemin)
    {
       $nom_repertoire = $chemin;
       $pointeur = opendir($nom_repertoire);
       while ($fichier = readdir($pointeur))
       {
          //on ne traite pas les . et ..
          if(($fichier != '.') && ($fichier != '..'))
          {
             //si c'est un dossier, on le lit
             if (is_dir($nom_repertoire.'/'.$fichier))
             {
     
                lister($nom_repertoire.'/'.$fichier);
     
             }
             else
             {
     
                echo $chemin.'/'.$fichier.'<br>';
             }
          }
       }
       closedir($pointeur);
    }
    //echo lister("D:/ARCHIVE");
    ?>
    Cela serait parfait. Mais le must serait de récupérer en plus dans la bdd la taille du doc et sa date de modification et de création.

    Merci de votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France, Aube (Champagne Ardenne)

    Informations forums :
    Inscription : Décembre 2009
    Messages : 24
    Par défaut
    Bonjour,

    Pour extraire certaines parties d'une chaine de caractère satisfaisant l'expression régulière, il suffit de mettre entre parenthèse les patterns de la requi correspondent aux données à extraire, et à passer un array en troisième argument de preg_match pour que la fonction le remplisse avec les occurences matchant les patterns entre les parenthèses.

    Regarde au niveau du deuxième exemple:
    http://www.php.net/manual/fr/function.preg-match.php

    edit: typos

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/05/2006, 14h41
  2. [MySQL] extraire des nombre d'une chaine de caractères et addition
    Par Yotho dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/03/2006, 16h54
  3. Comment extraire des caractères d'une chaine ?
    Par Powa87 dans le forum Langage
    Réponses: 16
    Dernier message: 01/01/2005, 19h00
  4. [LG]Extraire des nombres d'une chaine
    Par audreym31 dans le forum Langage
    Réponses: 4
    Dernier message: 18/01/2004, 21h24
  5. Réponses: 9
    Dernier message: 17/01/2003, 11h45

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