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 :

Lecture du code html entre deux balises


Sujet :

Langage PHP

  1. #1
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut Lecture du code html entre deux balises
    Bonjour
    Quelle est la meilleure facon de lire du code html entre deux balises?
    J'ai trouvé cette solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match('/<body>(.*?)<\/body>/s', $data, $matches);
    mais selon vous, est-ce une bonne idée, et est-ce la meilleure?
    merci

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Pour parser du HTML cest DOMDocument
    Tout autre idée est une hérésie.

    stealth35 sort de ce corps

  3. #3
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    ok merci
    mais comment puis-je convertir du html en xml?
    Je veux par exemple récupérer le texte qui se trouve dans la balise
    <p align="justify"> de ce lien html:
    view-source:http://www.lygeros.org/5715-gr.html

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Ce que tu souhaites faire relève du data-mining et il vaut mieux avoir l'autorisation du site ciblé.
    Ensuite le HTML est déjà du XML.
    Pour la sélection du paragraphe voulu c'est du DOMXPath.
    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $data = file_get_contents('http://www.lygeros.org/5715-gr.html');
    if ($data === false) {
       exit;
    }
    $dom = new DOMDocument();
    $dom->loadHTML($data);
    $xpath = new DOMXPath($dom);
    $nodes = $xpath->query('p[@align="justify"]');
    foreach($nodes as $node) {
       $txt = $node->textContent;
    }
    Enfin un truc de ce genre.

  5. #5
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    Ce que tu souhaites faire relève du data-mining et il vaut mieux avoir l'autorisation du site ciblé.
    C'est mon propre site.

    Pour la sélection du paragraphe voulu c'est du DOMXPath.
    merci je regarde

  6. #6
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    en fait, voici ce que je veux faire.
    J'ai des fichiers sur un site web qui résultent d'une mauvaise utilisation du php. Il se présentent sous cette forme:
    Les balises hauti permettent d'injecter le code html.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <? include ('hauti.inc'); ?>
    Chant d’honneur
    <? include ('hauti2.inc'); ?>
    Chant d’honneur
    <? include ('hauti3.inc'); ?>
    2013
    <? include ('hauti4.inc'); ?>
    Nous écoutions le chant d’antan<br/>
    comme si c’était une prière.<br/>
    Nous aimions ces sonorités<br/>
    .........
     
    <? include ('hauti5.inc'); ?>
    Ce qui donne ceci:
    http://www.lygeros.org/2013-fr.php

    Je voudrais paser les fichiers pour récupérer le texte qui se trouvent entre les balises <?...?>. Mais je ne vois pas trop comment faire. Utiliser des regex?
    J'ai voulu faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $texte=preg_split("/[\s]*[<?*?>][\s]*/", $texte);
    Qu'en pensez vous? Je pense qu'il risque d'y avoir un problème s'il y a des points d'interrogation dans le texte.
    De plus j'aimerais aussi récupérer le nom des balises (hauti5, hauti1...) pour savoir à quoi j'ai affaire
    Merci

  7. #7
    Membre du Club Avatar de Halex78
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2007
    Messages : 75
    Points : 68
    Points
    68
    Par défaut
    Hello, déjà pour matcher du contenu entre deux balises, il serait bon d'utiliser l'option "U" si plusieurs balises existent dans ton texte.
    Il faut échapper les ?.
    Ensuite ta regex ne me semble pas très adaptée à ce que tu veux faire. Moi j'aurais plutôt utilisé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('#<\?(.*)\?>#Us', $texte,$TabResultats);
    Et tu récupères tes résultats dans le tableau $TabResultats[1]

    De quelles balises parles-tu ? (hauti1,...)

Discussions similaires

  1. Récupérer le contenu entre deux balises même les tags html
    Par asbb.asbb dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 26/02/2015, 15h23
  2. [Débutant] Prendre une chaine de texte entre deux balises d'un code source.
    Par megavigore33 dans le forum VB.NET
    Réponses: 7
    Dernier message: 09/12/2014, 23h05
  3. Capturer texte entre deux balises HTML?
    Par jojo86 dans le forum Langage
    Réponses: 3
    Dernier message: 01/07/2011, 10h05
  4. Dreamweaver remplacer du code entre deux balises ?
    Par kermystik dans le forum Dreamweaver
    Réponses: 3
    Dernier message: 31/08/2006, 11h47
  5. Récupérer du texte d'un fichier xml entre deux balises
    Par manutudescends dans le forum Format d'échange (XML, JSON...)
    Réponses: 24
    Dernier message: 30/11/2005, 18h29

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