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 :

[HTML PARSER] expression régulière avec preg_match_all [RegEx]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 21
    Par défaut [HTML PARSER] expression régulière avec preg_match_all
    Bonjour à tous,

    je débute un peu dans les expressions régulières et je me confronte à un soucis.

    J'ai récupéré le code HTML d'une page web dans une variable et j'essaie de récupérer des valeurs (la définition du parser HTML quoi )

    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <td bgcolor="#D4D4D4" width="72" align="center">12</td>
    <td bgcolor="#D4D4D4" width="77" align="center">12/08/10</td>
    <td width="60" align="center" bgcolor="#E7E7E7"></td>
    <td width="62" align="center" bgcolor="#E7E7E7">???</td>
    <td align="center" bgcolor="#E7E7E7">Dénominateur</td>
    J'aimerais extraire les valeurs suivantes : "12", "12/08/10", "Dénominateur"

    En gros, trouver toutes les valeurs X :

    <td bgcolor="#D4D4D4" width="72" align="center">X<
    <td bgcolor="#D4D4D4" width="77" align="center">X<
    <td align="center" bgcolor="#E7E7E7">X<

    Faut-il passer par preg_match_all pour chaque type de masque ? preg_match_all est bien la fonction a utiliser ? Quel masque utiliser ?

    Je m'y perds un peu ^^

    Merci pour votre aide !

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 21
    Par défaut
    Premier essai mais c'est un echec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $machaine = '<td bgcolor="#D4D4D4" width="72" align="center">12</td>';
     
    preg_match_all("#<td bgcolor=\"#D4D4D4\" width=\"72\" align=\"center\">([0-9]{2})</td>#", $machaine, $m);
     
    echo $m[1];

  3. #3
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('%<td[^>]*?>(.*?)</td>%si', $str, $res, PREG_PATTERN_ORDER);
    Donne
    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
    Array (
    	[0] => Array (
    		[0] => <td bgcolor="#D4D4D4" width="72" align="center">12</td>
    		[1] => <td bgcolor="#D4D4D4" width="77" align="center">12/08/10</td>
    		[2] => <td width="60" align="center" bgcolor="#E7E7E7"></td>
    		[3] => <td width="62" align="center" bgcolor="#E7E7E7">???</td>
    		[4] => <td align="center" bgcolor="#E7E7E7">Dénominateur</td>
    	)
    	[1] => Array (
    		[0] => 12
    		[1] => 12/08/10
    		[2] => 
    		[3] => ???
    		[4] => Dénominateur
    	)
    )
    EDIT : Et aussi...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('%<td (?:bgcolor="#D4D4D4" width="7[2|7]" align="center"|align="center" bgcolor="#E7E7E7")>(.*?)</td>%si', $str, $res, PREG_PATTERN_ORDER)
    Donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Array (
    	[0] => Array (
    		[0] => <td bgcolor="#D4D4D4" width="72" align="center">12</td>
    		[1] => <td bgcolor="#D4D4D4" width="77" align="center">12/08/10</td>
    		[2] => <td align="center" bgcolor="#E7E7E7">Dénominateur</td>
    	)
    	[1] => Array (
    		[0] => 12
    		[1] => 12/08/10
    		[2] => Dénominateur
    	) 
    )

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 21
    Par défaut
    Merci beaucoup

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 473
    Par défaut
    désolé de resortir le sujet mais mon problème est très proche de celui évoqué.

    Voici la chaine que j'essaye d'analyser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <td nowrap="nowrap" class="date">
    				23 sept<br>10:56
    			</td>
    Avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    preg_match_all("%<td[^>]*?>(.*)</td>%",$ligne,$tmp,PREG_PATTERN_ORDER);
    print_r($tmp);
    Et voici ce que j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Array ( [0] => Array ( ) [1] => Array ( ) )
    Je ne comprend pas ou est mon erreur....je me demande si ce n'est pas à cause des sauts de ligne.
    Merci de votre aide.

  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
    DOMDocument pour parser du HTML

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

Discussions similaires

  1. Expression Régulière avec Quote
    Par jon301 dans le forum Langage
    Réponses: 3
    Dernier message: 25/10/2006, 22h08
  2. [RegEx] Expression régulière avec preg_match_all
    Par tit_oune dans le forum Langage
    Réponses: 6
    Dernier message: 18/05/2006, 23h28
  3. Expressions régulières avec variable
    Par killprog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/04/2006, 17h03
  4. Expression réguliére avec CHECK
    Par BRAUKRIS dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 08/09/2005, 17h38
  5. Expression régulière avec "|"
    Par YanK dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/07/2005, 15h09

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