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 :

Capturer jusqu'au premier motif rencontré [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 77
    Par défaut Capturer jusqu'au premier motif rencontré
    Salut a tous,

    j'ai un petit probleme avec une regex. Je vous montre directement l'exemple plutot que vainement tenter de vous l'expliquer :

    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
    20
    21
    22
    23
    <tr>
        <th class="form-generico">Keyword targeting</th>
        <td class="form-generico">
        <ul><li><a href="tkeywords.html?op=v&amp;tkeyword_id=100">France SubCategories</a> : Immobilier - Colocation</li></ul>&nbsp;
            </td>
    </tr>
     
    <tr>
        <th class="form-generico">Keyword targeting</th>
        <td class="form-generico">
        Match all the keywords:<ul><li><a href="tkeywords.html?op=v&amp;tkeyword_id=100">France SubCategories</a> : Rencontres - Réservé aux + de 18 ans</li><li><a href="tkeywords.html?op=v&amp;tkeyword_id=101">France SubSubCategories</a> : Rencontres - Réservé aux + de 18 ans - Erotica</li></ul>&nbsp;
            </td>
     
    </tr>
     
    <tr>
        <th class="form-generico">Keyword targeting</th>
        <td class="form-generico">
        Match all the keywords:<ul><li><a href="tkeywords.html?op=v&amp;tkeyword_id=100">France SubCategories</a> : Immobilier - Vente Appartement - Maison</li><li><a href="tkeywords.html?op=v&amp;tkeyword_id=104">France Departments (Level 2)</a> : Languedoc-Roussillon - Aude, Languedoc-Roussillon - Gard, Languedoc-Roussillon - Hérault, Languedoc-Roussillon - Pyrénées-Orientales, Bretagne - Ille-et-Vilaine, Bretagne - Morbihan, Bretagne - Côtes-d'Armor, Pays de la Loire - Loire-Atlantique, Nord-Pas-de-Calais</li></ul>
        </td>
    </tr>
     
    #France SubCategories</a> : (.*)</li>#
    Donc il y a ici 3 blocs <tr> différents. En dessous la regex. Je voudrais que celle ci capture ce qui est contenu entre "France SubCategories</a> : " et le "</li>" directement apres. Or pour le 2eme ou 3eme bloc <tr>, la regex capture tout jusqu'au dernier </li> rencontré.
    Avez vous une idée ?

    Merci par avance.

  2. #2
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Bonjour,

    et avec l'option Ungreedy ?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #France SubCategories</a> : (.*)</li>#U

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 77
    Par défaut
    Salut Madfrix,

    et bien ca marche parfaitement c'est exactement ce que je cherchais. Je te remercie de ta réponse concise ca va bien m'aider
    Il y a aussi une autre solution (en tout cas une solution que je connais, il doit y avoir encore d'autres moyens) : #France SubCategories</a> : (.*?</li>)# mais ca capture le </li> qui va avec.

    Merci encore

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    je le dis a chaque fois : pour parser du DOM c'est DOMDocument

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 77
    Par défaut
    Salut Stealth35,

    en effet DomDocument serait bien adapté mais en l'occurence je n'ai qu'une valeur a récupérer dans toute la page, et sa position dans le DOM est tres variable. Donc plutot que de créer des conditions et autres lignes de code pour trouver la bonne donnée, je pense qu'ici une petite regex est parfaitement adaptée et améliore les performances.
    Mais je ne te cache pas que si j'avais du parser plus en détail le DOM, j'aurais utilisé DomDocument.

    Merci

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par WalidNat Voir le message
    Salut Stealth35,

    en effet DomDocument serait bien adapté mais en l'occurence je n'ai qu'une valeur a récupérer dans toute la page, et sa position dans le DOM est tres variable. Donc plutot que de créer des conditions et autres lignes de code pour trouver la bonne donnée, je pense qu'ici une petite regex est parfaitement adaptée et améliore les performances.
    Mais je ne te cache pas que si j'avais du parser plus en détail le DOM, j'aurais utilisé DomDocument.

    Merci
    tu peux faire ca avec juste une seule requête xpath pas besoin de condition

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

Discussions similaires

  1. [RegEx] Capturer les 3 premiers paragraphes d'une page HTML
    Par renaud26 dans le forum Langage
    Réponses: 16
    Dernier message: 30/08/2011, 11h59
  2. Recuperer seulement le premier motif
    Par oliviernouhi dans le forum Langage
    Réponses: 8
    Dernier message: 28/02/2011, 12h45
  3. Réponses: 1
    Dernier message: 21/01/2011, 17h17
  4. Réponses: 4
    Dernier message: 03/10/2009, 02h24
  5. Réponses: 3
    Dernier message: 23/04/2007, 11h43

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