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 :

expression reguliere php, balise entrelassé


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Points : 45
    Points
    45
    Par défaut expression reguliere php, balise entrelassé
    Bonjour,
    Je suis débutant en php, et je suis confronté à un pb. Voila, mon but est de crawler pour extraire les infos que je désire a partir d'un site. Je récupere le code source, jusque la, no pb, et j'utilise des regexp pour extraire les infos que je désire.
    Mon probleme arrive
    si j'ai un code source de la forme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <table>
    blablablabla
    </table>
    bloblobloblo
    <table>
    blibliblibli
    </table>
    et que j'utilise la regexp suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <table>(.)*</table>
    je récupere ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    blablablabla
    </table>
    bloblobloblo
    <table>
    blibliblibli
    Mon but est de récuperer cela :
    blablablabla et
    blibliblibli

    Merci de votre aide

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Tu as utilisé ceci preg_match_all qui récupère tous les éléments correspondants au masque

  3. #3
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 249
    Points : 1 565
    Points
    1 565
    Par défaut
    preg_match_all est la premiere etape, il faut aussi ajouter l'option U qui permet de rechercher la chaine la plus courte possible.


  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    ceci fonctionne mais c'est à améliorer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $src = "<table>
    blablablabla
    </table>
    bloblobloblo
    <table>
    blibliblibli
    </table>";
    preg_match_all("#<table>(.*)<\/table>#sU",$src,$split);
     
    for($i=0;$i<count($split[0]);$i++)
        echo $split[0][$i]."<br>";
    ?>

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 54
    Points : 45
    Points
    45
    Par défaut
    Merci bcp pour ces réponses, impec ca marche

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Citation Envoyé par neril
    et que j'utilise la regexp suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <table>(.)*</table>
    Les expressions régulières sont avides, c'est à dire qu'elles prennent la chaîne la plus longue correspondant au masque. Par contre, il est facile de changer ce comportement et ainsi ta regexp serait devenu :
    Comme quoi il suffit de pas grand chose pour qu'elle devienne non-avide.
    Et .+ deviendrait .+?


    Voilà pour l'info, Julp.

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

Discussions similaires

  1. Expression reguliere et balise
    Par epeedelorage dans le forum Requêtes
    Réponses: 4
    Dernier message: 18/12/2011, 19h41
  2. [RegEx] Expressions regulieres PHP
    Par ouss747 dans le forum Langage
    Réponses: 4
    Dernier message: 22/12/2010, 16h20
  3. expression reguliere php
    Par hamzawii dans le forum Langage
    Réponses: 3
    Dernier message: 23/06/2010, 16h08
  4. [MySQL] expression reguliere dans php
    Par juzii dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/02/2009, 21h43
  5. Expression reguliere pour les balises
    Par snopims dans le forum C#
    Réponses: 4
    Dernier message: 27/06/2008, 16h10

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