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 :
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
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> .......
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
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']; }
Partager