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 :

Fonction preg_match_all avec lecture d'un fichier


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Janvier 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 49
    Points : 52
    Points
    52
    Par défaut Fonction preg_match_all avec lecture d'un fichier
    Bonjour tous le monde,

    Alors voila, j'aimerai à partir d'un classeur CALC exporter en HTML ou XHTML (suivant ce qui marchera et le plus pratique) récupérer des informations entre des balises, ou même à l'intérieure des balises dans une autre page.

    Par exemple j'ai une page resultat.php qui va ouvrir la page Test.html, lire le contenu et me ressortir le résultat attendu.

    Test.html (la version XHTML est dit : "fichier non valide" pour le mettre pièce jointe, si besoin je vous l'enverrai par un autre moyen )

    Donc pour cela j'essaye, et j'ai bien dis j'essaye , d'utiliser la fonction PHP : preg_match_all

    Mais sans résultats !

    Par exemple, dans le ficher HTML en pièce jointe :

    Code html : 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 FRAME=VOID CELLSPACING=0 COLS=3 RULES=NONE BORDER=0>
    	<COLGROUP><COL WIDTH=86><COL WIDTH=86><COL WIDTH=86></COLGROUP>
    	<TBODY>
    		<TR>
    			<TD WIDTH=86 HEIGHT=17 ALIGN=LEFT BGCOLOR="#FF0000">#ff0000</TD>
    			<TD WIDTH=86 ALIGN=LEFT BGCOLOR="#FF0000">#ff0000</TD>
    			<TD WIDTH=86 ALIGN=LEFT BGCOLOR="#FF0000">#ff0000</TD>
    		</TR>
    		<TR>
    			<TD HEIGHT=17 ALIGN=LEFT BGCOLOR="#0000FF">#0d26ff</TD>
    			<TD ALIGN=LEFT BGCOLOR="#0000FF">#0d26ff</TD>
    			<TD ALIGN=LEFT BGCOLOR="#0000FF">#0d26ff</TD>
    		</TR>
    	</TBODY>
    </TABLE>

    J'aimerai récupérer la valeur "#FF0000" du "BGCOLOR"

    Pouvez-vous m'aider ?

    Merci

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Ouh la ! du HTML antédiluvien ! Pas étonnant que la version XHTML te hurle dessus, ça doit (au mieux) être du HTML4.

    Normalement pour lire du HTML, on utilise les outils de lecture du XML comme Dom. En l’occurrence : DOMDocument::loadHTMLFile m'a l'air bien.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Janvier 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 49
    Points : 52
    Points
    52
    Par défaut
    Bonjour,

    Désolé pour ce très long retard !! Je suis actuellement en déplacement professionnel sans connexion internet

    Je test ça le plus rapidement possible (dans la soirée si possible) pour apporter une réponse dans les plus bref délais !

    Vraiment désolé encore pour ce retard, ce n'est pas dans mes habitudes en général !

    Encore merci à toi Celira

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Janvier 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 49
    Points : 52
    Points
    52
    Par défaut
    Alors les résultats

    J'obtiens bien les codes qu'il y a entre les balises <td> ... </td>, mais ce que j'aimerai c'est le code dans la balise <td ...> et non entre (aprés le "BGCOLOR="")

    J'ai essayé mais sans succès !

    Code php : 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
    <?php
    // try this html listing example for all nodes / includes a few getElementsByTagName options:
     
    $file = "test.html";
    $doc = new DOMDocument();
    $doc->loadHTMLFile($file);
     
    // example 1:
    //$elements = $doc->getElementsByTagName('*');
    // example 2:
    $elements = $doc->getElementsByTagName('td');
    // example 3:
    //$elements = $doc->getElementsByTagName('body');
    // example 4:
    //$elements = $doc->getElementsByTagName('table');
    // example 5:
    //$elements = $doc->getElementsByTagName('div');
     
    if (!is_null($elements)) {
      foreach ($elements as $element) {
        echo "<br/>". $element->nodeName. ": ";
     
        $nodes = $element->childNodes;
        foreach ($nodes as $node) {
          echo $node->nodeValue. "\n";
        }
      }
    }
    ?>

    Merci

  5. #5
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 897
    Points : 6 662
    Points
    6 662
    Par défaut
    Tu peux utiliser la méthode getAttribute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $file = "test.html";
    $doc = new DOMDocument();
    $doc->loadHTMLFile($file);
     
    $elements = $doc->getElementsByTagName('td');
     
    foreach ($elements as $element) {
        if ($element->hasAttribute("BGCOLOR"))
            echo "\ncolor: " . $element->getAttribute("BGCOLOR");
    }
    Il n'est pas utile de tester si la liste d'éléments est vide avant un foreach car dans ce cas le foreach n'est tout simplement pas exécuté.

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Janvier 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 49
    Points : 52
    Points
    52
    Par défaut
    J'obtiens une page blanche avec getAttribute ...

  7. #7
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 897
    Points : 6 662
    Points
    6 662
    Par défaut
    Oups! En effet!

    Il faut écrire BGCOLOR en minuscule dans hasAttribute et getAttribute.

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Janvier 2014
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 49
    Points : 52
    Points
    52
    Par défaut
    Parfait cela fonctionne exactement comme je voulais !

    Merci beaucoup

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

Discussions similaires

  1. [RegEx] Utilisation de la fonction "preg_match_all" avec des apostrophe ou des œ
    Par arnaudperfect dans le forum Langage
    Réponses: 4
    Dernier message: 16/08/2008, 23h05
  2. Réponses: 2
    Dernier message: 25/10/2007, 13h56
  3. Réponses: 20
    Dernier message: 25/09/2005, 15h07
  4. Réponses: 2
    Dernier message: 13/12/2004, 23h32
  5. Réponses: 12
    Dernier message: 14/06/2004, 13h06

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