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 :

Problème a la concaténation de 2 regex


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Par défaut Problème a la concaténation de 2 regex
    Bonjour, lorsque je désire appliquer ma regex complete le premier match ne fonctionne pas correctement mais séparément les 2 bout fonctionne.
    j'ai essayé ma regex dans un simulateur et elle passe je ne vois pas du tout d'ou ca peu venir merci si vous pouvez voire ce qui ne va pas.
    Expression à parser :
    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
    ......
    <td class="playername">
         <a href="#" class="tipsGalaxy" rel="#........">
              <span class="status_abbr_active">NomATrouver</span>
         </a>
         <div id="player119359" class="c3">
              <div class="TTInner" id="TTWrapper">
                   <h4><span class="spacing">joueur: <span>NomATrouver</span></span></h4>
                   <div class="body" id="TTPlayer">
                        <ul class="ListLinks">
                             <li class="rank">Place: RangATrouver</li>
                             <li><a href="index.php?......." class="thickbox">Message</a></li>
                             <li><a href="index.php?......." class="thickbox">Demande d`ajout à la liste d`amis</a></li>
                             <li><a href="index.php?.......">Statistique</a></li>
                        </ul>
                   </div>
                   <div class="footer"></div>
              </div>
         </div>
    </td>
    <td class="spacer03"></td>
    <td class="allytag">......</td>
    .......
    voici mes regex pour avoir le nom du joueur et son rang:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    //nom du joueur
    $pattern_JoueurName = '<td class="playername[^>]*">(?J)(?:\s*<span[^>]*?>(?<nickname>.*?)|.*?<span[^>]*?>joueur: (?:<span[^>]*?>(?<nickname>.*?)</span>|(?<nickname>)))</span>';
     
    //rang du joueur
    $pattern_rank = '(?:.*?Place: ?(?<rank>\d*).*?|(?<rank>\s*))</td>\s*<.*?>\s*</.*?>\s*<td class="allytag">';
     
    $pattern_Joueur = $pattern_JoueurName.$pattern_rank;
     
    //recherche
    if (preg_match('#'.$pattern_Joueur.'#Xs',$planet,$info)){
         echo "joueur : ".$info['nickname']." rang : ".$info['rank'];
    }
    avec ce code je ne recupere que le rang du joueur $info['nickname'] est vide mais si je parse la chaine juste avec la regex $pattern_JoueurName j'obtient le nom voila si quelqu'un voit ce que je fais mal merci

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    je ne vois pas ce que tu fais mal mais pourquoi ne pas utiliser le fait que tu es devant un document html bien structuré?

    un peu de xslt ça serai aussi simple.

    j'ai du mal a comprendre ta regex mais je vois un truc qui ressemble à une balise <rank> ? normal? comment est ce que tu gères les sauts de ligne?

  3. #3
    Membre averti
    Inscrit en
    Mars 2009
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 22
    Par défaut
    en fait je parse les info qui sont dans une page web pour en extraire les info et les mettre dans une BD plus tard. Pour le xslt je voit pas trop pourquoi je ne veux pas transformer du xml. sinon ce que tu vois n'est pas une balise mais une capture nommé merci quand même pour ta réponse.
    Pour les saut de ligne je le gere avec l'option 's' qui fait que '.' peut etre un retour à la ligne

  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
    comme je le dis tout le temps : pour parser du HTML c'est DOMDocument...

Discussions similaires

  1. [AC-2007] Problème avec champs concaténé dans 1 formulaire
    Par Peter K. dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/08/2009, 17h09
  2. Problème aberrant de concaténation de string
    Par boss_gama dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 30/06/2008, 16h08
  3. Réponses: 2
    Dernier message: 07/06/2008, 16h23
  4. Réponses: 2
    Dernier message: 08/03/2008, 14h24
  5. Problème de code (concaténation de chaines)
    Par Marco17 dans le forum C++
    Réponses: 7
    Dernier message: 15/07/2007, 14h35

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