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 :

Récupération de chaines de caractères [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 13
    Points
    13
    Par défaut Récupération de chaines de caractères
    Bonjour,

    J'ai besoin de votre aide pour recupérer les informations suivantes :

    "Type = Petit format"

    "Genre = action"
    "Genre = aventure"

    "Editeur = poche"

    "1er date parution = 2000"

    Le code HTML se trouve dans la variable $html du code.

    J'essaie d'utiliser la fonction preg_match_all mais sans succès........
    Mon but est de mettre les infos correspondantes dans un tableau.

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    $html = '
          <li>
          <strong>Type</strong>:
            <a href="http://www.google.com/index.php/type/pformat" >
              Petit format        </a>
          </li>
     
             <li>
          <strong>Genre</strong>:
          <a href="http://www.google.com/index.php/genre/Action" >
              Action</a>, 
           <a href="http://www.google.com/index.php/genre/Aventure" >
              Aventure</a>
          </li>
     
     
          <li>
          <strong>Editeur </strong>:
            <a href="http://www.google.com/index.php/editeur/poche">
            Poche        </a>
          </li>
     
     
          <li>
          <strong>1er date parution </strong>:
            2000      </li>';
     
     
          // Recuperation de la date de parution mais le pattern fonctionne pas....
     
          $pattern = "#<li><strong>1er date parution <\/strong>:(.*?)<\/li>#Usi";
          if(preg_match_all($pattern, $html, $parution)){
          echo "<PRE>";
           print_r($parution);
          echo "</PRE>";
         }
    Merci d'avance de votre aide !

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    déjà tu as un saut de ligne entre "<li>" et "<strong>" donc tu peux rajouter un ".{1,2}" pour ce saut de ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          $pattern = "#<li>.{1,2}<strong>1er date parution <\/strong>:(.*?)<\/li>#Usi";

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par nosferapti Voir le message
    déjà tu as un saut de ligne entre "<li>" et "<strong>" donc tu peux rajouter un ".{1,2}" pour ce saut de ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
          $pattern = "#<li>.{1,2}<strong>1er date parution <\/strong>:(.*?)<\/li>#Usi";
    Je viens d'en rajouter un autre apres le </strong> mais ça me donne toujours aucun resultat...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $pattern = "#<li>.{1,2}<strong>1er date parution <\/strong>:.{1,2}(.*?)<\/li>#Usi";
    On peut pas limiter la casse, saut de lignes, retour chariot etc....
    Par contre je sais pas du tout comment mettre en forme le regex pour le type ou le genre vu que les liens changent.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Bon j'ai finallement trouvé pour la date de parution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $pattern = "#<strong>1er date parution <\/strong>:(.*?)<\/li>#Usi";
    Par contre il me faudrait un coup de main pour le reste, car là je planche...

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    pour les autres, étant donné que tu as repétition du sous groupe a dans le li, je ne vois pas comment recupérer plusieurs genres en remontant jusqu'au li...
    En revanche tu peux attaquer à partir du href ...

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    <?php
    header('Content-Type: text/html; charset=utf-8');
    $html = '<li>
          <strong>Type</strong>:
            <a href="http://www.google.com/index.php/type/pformat" >
              Petit format        </a>
          </li>
     
             <li>
          <strong>Genre</strong>:
          <a href="http://www.google.com/index.php/genre/Action" >
              Action</a>, 
           <a href="http://www.google.com/index.php/genre/Aventure" >
              Aventure</a>
          </li>
     
     
          <li>
          <strong>Editeur </strong>:
            <a href="http://www.google.com/index.php/editeur/poche">
            Poche        </a>
          </li>
          
          		
          <li>
          <strong>1er date parution </strong>:
            2000      </li>';
     
     
     
     
     
    	  $donnee="Type";
    	  $pattern = "#(www.google.com/index.php/".$donnee."[^>]*>(?P<donnee>[^<]*)</a>)#xi";
    	  preg_match_all($pattern, $html, $parution);
          //var_dump ($parution['donnee']);
    	  foreach($parution['donnee'] as $value){
    	  echo $donnee. ':' .$value .'<br>';
    	  }
    	  $donnee="Genre";
    	  $pattern = "#(www.google.com/index.php/".$donnee."[^>]*>(?P<donnee>[^<]*)</a>)#xi";
    	  preg_match_all($pattern, $html, $parution);
          //var_dump ($parution['donnee']);
    	  foreach($parution['donnee'] as $value){
    	  echo $donnee. ':' .$value .'<br>';
    	  }	
          $donnee="Editeur ";
    	  $pattern = "#(www.google.com/index.php/".$donnee."[^>]*>(?P<donnee>[^<]*)</a>)#xi";
    	  preg_match_all($pattern, $html, $parution);
          //var_dump ($parution['donnee']);
    	  foreach($parution['donnee'] as $value){
    	  echo $donnee. ':' .$value .'<br>';
    	  }	
     
     
    echo '</body></html>';
     
     
    ?>

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Merci de ton aide SpaceFrog

    Par contre le saut de ligne de nosferapti ne fonctionne pas chez moi. Si tu es dans le coin explique moi le ".{1,2}"

    Merci de votre aide !

  7. #7
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    Citation Envoyé par trash_board Voir le message
    Si tu es dans le coin explique moi le ".{1,2}"
    ça veut dire "1 ou 2 caractères" parce que sous Linux et Mac le saut de ligne est sur 1 caractère mais sous Windows il y en a 2

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1

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

Discussions similaires

  1. [WD17] récupération de chaine de caractère via socket
    Par myk19 dans le forum WinDev
    Réponses: 4
    Dernier message: 25/08/2012, 23h36
  2. [MySQL] Récupération données (chaine de caractère) - Décomposition, concaténation ?
    Par yohan0262 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 28/10/2009, 15h33
  3. récupération de chaine de caractères spéciaux
    Par toine62 dans le forum Langage
    Réponses: 2
    Dernier message: 26/11/2007, 17h58
  4. Réponses: 5
    Dernier message: 31/05/2007, 20h35
  5. Réponses: 2
    Dernier message: 14/11/2006, 18h08

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