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 :

Besoin d'aide pour une regex (html) [RegEx]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club Avatar de benjamin122
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2012
    Messages : 25
    Points : 35
    Points
    35
    Par défaut Besoin d'aide pour une regex (html)
    Bonjour ,

    Je suis à la recherche d'une solution pour ma regex suivante : J'essaie de récuperer le contenu d'une balise div dans une page Html tirée de la fonction ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $html = file_get_contents("http://www.monsite.com")
    $nb =preg_match('#<div id="TEST">(.*?)</div>#', $html, $matches);
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div id="TEST">
      Bob l'éponge est vraiment le plus malin .<br><br>
        <a style="font-weight:bold;" href="javascript:show_more();">Tous&gt;&gt;&gt;</a>
    </div>

    J'essaie donc d'encadrer le contenu entre les 2 div dans ma variables matches. Mais évidemment ça ne marche pas sinon je ne solliciterai pas votre précieuse aide .

    Tout commentaire sera le bienvenu


    ps : Nombreux sont les tuto que j'ai lu sur les regex je ne viendrais pas demander si je ne connaissais pas la matiere , généralement je m'en sors sans trop de soucis mais ici je cale depuis le matin.





    Benjamin, étudiant en programmation

  2. #2
    Membre habitué Avatar de zugolin
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 267
    Points : 164
    Points
    164
    Par défaut
    essaies avec preg_match_all et vois si tu n'aurais pas le résultat dans le code source de ta page
    des fois , on voit un résultat blanc sur la page html, mais , a cause des balises qui ont été effacées, il peut y avoir des résultats cachés dans la source
    il y a aussi des problemes avec les sauts et retour ligne, des fois

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $order=array("\r\n","\n","\r");//on "serre" pour eviter les erreurs
    $resultat=str_replace($order, "", $la_source);
    et des fois aussi , des erreurs a cause des symboles et des retranscriptions bizarres

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $orderA=array('Â','’','“','”');
    $orderB=array(' ', '&apos;','&ldquo;','&rdquo;');
    $letextefinal=str_replace($orderA, $orderB, $letexte);

  3. #3
    Nouveau membre du Club Avatar de benjamin122
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2012
    Messages : 25
    Points : 35
    Points
    35
    Par défaut
    Bonjour ,


    Merci d'avoir pris le temps de répondre. Cepandant ta solution ne semble pas résoudre mon problème . Pour ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $order=array("\r\n","\n","\r");//on "serre" pour eviter les erreurs
    $resultat=str_replace($order, "", $la_source);
    J'ai besoin de récuperer la syntaxe également càd que j'aimerai récuperer également les \n etc.. , j'ai quand même essayé pour voir si le probleme venait de là mais apparemment ça ne change rien.


    Pour la 2e solution n'existe t'il pas une fonction en php pour les caractere spéciaux style utf8_encode/decode qui pourrait gérer plus de cas que ceux que tu as cité? arretez moi si je me trompe car ça n'a pas l'air de marcher ...

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Un document HTML ou XML ne se parse pas à coup de regexp mais avec des outils adaptés, par exemple DOMDocument.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Nouveau membre du Club Avatar de benjamin122
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2012
    Messages : 25
    Points : 35
    Points
    35
    Par défaut
    Merci de m'aiguiller Bovino J'ai lu attentivement les infos sur DOMDocument. J'en avais déja entendu parler sans trop m'interresser mais ce coup ci je me lance dedans . Si par hasard quelqu'un connaitrait un bon tuto ou alors plus particulièrement des informations sur la fonction Query qui permet de faire des recherches dans un doc de type DOMDocument.

    J'ai déja fait quelques test mais je n'arrive qu'a retirer que quelques informations

    par ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $divs= $Dom->query('//div/@id');
    ici ça me récupère tout les id des div dans mon fichier html. Mais ca m'interreserait de savoir comment par exemple retirer ce que le div encadre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      <div id="test">Bob l'éponge est le meilleur </div>
    donc j'aimerai retirer ici bob l'éponde est le meilleur.
    Voila si quelqu'un saurait me donner un lien , une idée sur quoi je peux lancer mes recherches ca serait sympa.


    ps : je ne sais pas si ca se fait de relancer un sujet qui est différent de mon 1er post mais bon arretez moi si je fais une gourde

  6. #6
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    heuuu strip_tags ?
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  7. #7
    Nouveau membre du Club Avatar de benjamin122
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2012
    Messages : 25
    Points : 35
    Points
    35
    Par défaut
    N'y a t-il pas une fonciton de la class DomDocument qui permet de faire cela?
    strip_tags ne me semble pas tres propre

  8. #8
    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
    Salut,

    Je ferais quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $dom = new DOMDocument();
    $dom->loadXML($xml);
     
    $xpath = new DOMXPath($dom);
    $list = $xpath->query("//div[text()[contains(., 'TON TEXTE ICI')]]");

  9. #9
    Nouveau membre du Club Avatar de benjamin122
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2012
    Messages : 25
    Points : 35
    Points
    35
    Par défaut
    SAlut ,

    Pourrais tu détailler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $list = $xpath->query("//div[text()[contains(., 'TON TEXTE ICI')]]");

    TON TEXTE ICI , je ne comprends pas tres bien ce que tu veux que je mette la , peut etre ai-je mal compris , ou peut etre je me suis mal exprimé , ce que je souhaiterai c'est que via l'identidiant test j'arrive a récuperer dans une variable Bob l'éponge est le meilleur. Bien sur cette phrase je ne la connais pas avant d'éxécuter le code , il n'y a que TEST que je connais


    Merci d'avoir pris le temps de me répondre

  10. #10
    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
    J'avais cru que tu cherchais une valeur textuelle, ok je m'ai trompé

    Alors voici comme faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $data = array();
     
    $dom = new DOMDocument();
    $dom->loadXML($xml);
     
    $xpath = new DOMXPath($dom);
    $list  = $xpath->query('//div[@id="test"]');
     
    foreach($list as $node) {
        $data[] = $node->textContent;
    }
    Allez, croisage des doigts

  11. #11
    Nouveau membre du Club Avatar de benjamin122
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2012
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2012
    Messages : 25
    Points : 35
    Points
    35
    Par défaut
    Ca marche super Maintenant j'ai une base et je comprends mieux déja comment marche le systeme .

    Un grand merci

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

Discussions similaires

  1. [RegEx] Besoin d'aide pour une regex
    Par vallica dans le forum Langage
    Réponses: 3
    Dernier message: 20/09/2006, 08h50
  2. Besoin d'aide pour une requete
    Par jnc dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/07/2005, 11h54
  3. Création requete besoin d'aide pour une date
    Par royrremi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/07/2004, 22h03
  4. Besoin d'aide pour une Requête SQL ...
    Par Kokito dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/07/2004, 11h56
  5. besoin d'aide pour une requête
    Par Damien69 dans le forum Langage SQL
    Réponses: 11
    Dernier message: 31/03/2004, 15h38

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