Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/01/2011, 22h55   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2009
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 21
Points : 11
Points : 11
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 :
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 :
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
fly85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 09h56   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
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 : 951
Points : 1 063
Points : 1 063
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?
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 13h50   #3
Candidat au titre de Membre du Club
 
Inscription : mars 2009
Messages : 21
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 21
Points : 11
Points : 11
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
fly85 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 13h51   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 101
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 101
Points : 8 466
Points : 8 466
comme je le dis tout le temps : pour parser du HTML c'est DOMDocument...
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h27.


 
 
 
 
Partenaires

Hébergement Web