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 :

[Tableaux] Extraction d'un tableau HTML


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 44
    Points : 28
    Points
    28
    Par défaut [Tableaux] Extraction d'un tableau HTML
    Bonjour à tous,

    Voilà, je cherche à extraire des données à partir d'un tableau html dont voici la structure :
    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
     
    <TABLE>
        <TR>
            <TD>Une données ici</TD>
            <TD>Une données ici</TD>
            <TD>Une données ici</TD>
            <TD>Une données ici</TD>
            <TD>Une données ici</TD>
            <TD>Une données ici</TD>
            <TD>Une données ici</TD>
            <TD>Une données ici</TD>
            <TD>Une données ici</TD>
            <TD>Une données ici</TD>
        </TR>
    </TABLE>
    C'est donc un tableau de 9 cellules par lignes avec un total d'une
    centaine de ligne ou un peu plus.

    Je cherche à extraire toutes ces données, j'ai utilisé pour ça les expressions
    régulières, mais c'est extrênement long ! ( plus de 15 secondes pour 3 lignes )

    Voici le code que 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
     
    /* CRÉATION DU PROFIL D'EXTRACTION DES DONNÉES */
    $nbre_cellules = 9; // Nombre de cellues par lignes
     
    $nbre_cellules_profil = 0; // Initialisation de la variable
     
    $profil_extraction = "<TR>"; // Début du profil
     
    /* Génère autant de cellules pour le profil que $nbre_cellules */
    while($nbre_cellules_profil < $nbre_cellules) {
        $profil_extraction .= "[[:space:]]*<TD [^>]*>(.*)</TD>";
     
        $nbre_cellules_profil++; // Incremente le nombre de cellules générés
    }
     
    $profil_extraction .= "[[:space:]]*</TR>"; // Fin du profil
     
    // Extraction
    eregi($profil_extraction, $tableau, $regs);
    En faite, à partir de chaque ligne du tableau, je dois en créer un fichier
    séparé.

    Auriez-vous une meilleur façon de vous y prendre ?

    Merci d'avance !
    Calen

    EDIT: Ortograf'

  2. #2
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Bonjour,
    déjà je te recommande l'utilisation de la fonction preg_match plutôt que la très lourde et obsolète famille ereg*().

    Ensuite, puisqu'il s'agit de données au format XML pourquoi ne pas tout simplement parser cette chaîne de caractère comme du XML ? Tu peux le faire facilement en PHP5 en utilisant simplexml par exemple.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Merci du conseil, je ne savais pas que eregi() était une fonction
    totalement obsolète.

    Le problème, c'est que je ne me suis jamais servir de preg_match()
    de ce coup

    J'ai fait un petit essai, mais celà ne retourne rien du tout.

    Le tableau de test :
    Code X : 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
    <TR>
    	<TD>
    		<P ALIGN=LEFT>Peter</P>
    	</TD>
    	<TD>
    		<P ALIGN=LEFT>Dujardin 
    		</P>
    	</TD>
    	<TD>
    		<P ALIGN=LEFT>Plant Manager</P>
    	</TD>
    	<TD>
    		<P ALIGN=LEFT>+51 2 875 08 87</P>
    	</TD>
    	<TD>
    		<P ALIGN=LEFT>+84 874 08 41</P>
    	</TD>
    	<TD>
    		<P ALIGN=LEFT>+87 645 89 14 51</P>
    	</TD>
    	<TD>
    		<P ALIGN=LEFT>+89 543 871 324</P>
    	</TD>
    	<TD>
    		<P ALIGN=LEFT>+47 981 384 824</P>
    	</TD>
    	<TD>
    		<P ALIGN=LEFT>+31 6 53 34 14 40</P>
    	</TD>
    </TR>

    Et voici le code donc je me sert :
    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
     
    /* CRÉATION DU PROFIL D'EXTRACTION DES DONNÉES */
    $nbre_cellules_profil = 0; // Initialisation de la variable
     
    $profil_extraction = "#<TR>"; // Début du profil
     
    /* Génère autant de cellules pour le profil que $nbre_cellules */
    while($nbre_cellules_profil < $nbre_cellules) {
        $profil_extraction .= "[[:space:]]*<TD>(.*)</TD>";
     
        $nbre_cellules_profil++; // Incremente le nombre de cellules générés
    }
     
    $profil_extraction .= "[[:space:]]*</TR>#"; // Fin du profil
     
    preg_match_all($profil_extraction, $tableau, $out, PREG_PATTERN_ORDER);
     
    // Affiche le resultat
    print_r ($out);
    Et enfin le résultat que j'obtient :
    Code X : 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
    43
    44
    Array
    (
        [0] => Array
            (
            )
    
        [1] => Array
            (
            )
    
        [2] => Array
            (
            )
    
        [3] => Array
            (
            )
    
        [4] => Array
            (
            )
    
        [5] => Array
            (
            )
    
        [6] => Array
            (
            )
    
        [7] => Array
            (
            )
    
        [8] => Array
            (
            )
    
        [9] => Array
            (
            )
    
    )

    Voilà voilà, je suis un peu coïncé.

    Si quelqu'un à une idée, je suis preneur !
    Calen

  4. #4
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $str = '<TABLE><TR><TD>.....';
     
    echo 'num lignes: ' . substr_count($str, '<TR>');
     
    $r = '|<TD>(.*?)</TD>|s';
    preg_match_all($r, $str, $a);
     
    print_r($a[1]);
    $a[1] est un array qui contient tous les matches de (.*?)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 44
    Points : 28
    Points
    28
    Par défaut
    Merci pour ta réponse mais j'ai trouvé une autre solution en faite.

    J'ai tout simplement trouvé un autre format que le HTML (.csv)
    qui m'a beaucoup facilité la tâche.

    Merci quand même,
    Calen

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/12/2012, 15h41
  2. [Tableaux] Générer dynamiquement un tableau HTML
    Par bdaboah dans le forum Langage
    Réponses: 6
    Dernier message: 06/02/2008, 16h34
  3. [Tableaux] Variable PHP dans tableau HTML
    Par Mut dans le forum Langage
    Réponses: 5
    Dernier message: 14/08/2007, 18h26
  4. [Tableaux] Tableau HTML dynamique
    Par gunth dans le forum Langage
    Réponses: 2
    Dernier message: 14/12/2005, 17h59
  5. [Tableaux] Extraction de valeur dans un tableau
    Par pirouette_07 dans le forum Langage
    Réponses: 6
    Dernier message: 21/10/2005, 18h54

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