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

EDI, CMS, Outils, Scripts et API PHP Discussion :

REGEXP : extraire une donnée entre balises précédée d'une assertion positive


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Points : 54
    Points
    54
    Par défaut REGEXP : extraire une donnée entre balises précédée d'une assertion positive
    Bonjour à tous,

    J'ouvre une nouvelle discussion compte tenu du fait que je tente de résoudre un problème de script et je ne trouve pas la réponse sur le forum.

    Problème:

    J'essaye de récupérer un bout de texte entre des balises sur une page html en utilisant une assertion positive, je vous explique pourquoi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <td><h4>n° de code</h4>LM03695</td>
    <td><h4>n° systeme</h4>KG63208</td>

    J'essaye de récupérer ce qu'il y a entre les balises </h4> et </td> et ceci seulement pour la ligne : n° de code.

    Solution tentée

    Alors j'ai commencé par ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('/<\/h4>(.*)<\/td>/i', $html, $matches);

    Evidemment vous comprenez que cela me récupère : "LM03695" et "KG63208"

    Comme ils sont en tout en point identique, j'ai décidé d'utiliser une assertion positive et c'est là que ça bloque, j'ai tenté ceci en imaginant que n'obtiendrais cette fois-ci que ce qu'il y entre les balises précédé de "code".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('/code(?=<\/h4>(.*)<\/td>)/i', $html, $matches);
    Ca ne récupère absolument rien du tout...

    Avez-vous une idée de pourquoi ça ne marche pas ?

    Merci d'avance à tous,
    Globolite

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 234
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    essaye ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $html = "
    <td><h4>n° de code</h4>LM03695</td>
    <td><h4>n° systeme</h4>KG63208</td>
    ";
     
    $regex = "!<td><h4>n° de code</h4>([^<]*)</td>!i";
    preg_match_all($regex, $html, $matches);
     
    var_dump($matches);

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Points : 54
    Points
    54
    Par défaut
    Super cela fonctionne très très bien !!!!

    Je vais analyser la Regexp parce que c'est vrai que j'ai pas tout à fait compris ce que tu as fait !

    Mais merci beaucoup !!!!

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/01/2013, 21h13
  2. récupérer une donnée entrée au clavier
    Par simouSQL dans le forum SQL
    Réponses: 7
    Dernier message: 26/06/2007, 14h50
  3. Regexp: extraire du texte entre deux balises
    Par moook dans le forum Langage
    Réponses: 11
    Dernier message: 19/06/2007, 18h08
  4. [RegExp] Extraire le texte entre 2 balises
    Par d1g-2-d1g dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/02/2007, 19h15
  5. [RegEx] Problème sélection données entre balises
    Par raptorman dans le forum Langage
    Réponses: 3
    Dernier message: 17/12/2006, 20h39

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