preg_match, trouver la dernière occurence avant telle chaine

preg_match, trouver la dernière occurence avant telle chaine - PHP - Programmation

Marsh Posté le 20-07-2009 à 20:32:23    

Bonjour, je voudrais trouver le bon pattern qui fonctionne avec preg_match pour du php 5. Je cherche à obtenir le dernier nombre sous la forme ">\d+<" avant la chaine MMMM dans cette chaine:

 
Citation :

e452!ù$ ev >25< 4 zf45 fif_zf."==" >54<>ezf MMMM zef >57< fze4 4f4z


Je veux donc le 54.

 

Avec ce pattern ça marche:

Code :
  1. '>(\d+)<(?!.*>\d+<.*MMMM)'
 

Mais impossible de faire marcher ce même pattern dans ce cas là où je veux récupérer le 21:

 
Citation :

{RM}</span><span style="color:#f00000;letter-spacing:2;">し</span><span style="color:#f0f0f0;letter-spacing:2;">ט</span><span style="color:#f00000;letter-spacing:2;">к</span><span style="color:#f0f0f0;letter-spacing:2;">α</span></a></td><td>2061.69</td><td class="r">0</td></tr><tr onMouseOver="mi(this)" onMouseOut="mo(this)"><td class="l">21</td><td><a href="/tmos/tmos_viewer.php?action=player&stats=a&sid=34&pid=MMMM"><span style="color:#F0F0F0;font-style:italic;">िGt</span><span style="color:#E05000;font-style:italic;"> . </span><span style="color:#F0F0F0;font-style:italic;">Eng</span><span style="color:#E05000;font-style:italic;">e</span><span style="c

 

preg_match me renvoie 0.

 

Pourtant je ne vois pas ce qui diffère dans ces 2 cas. Je vous demande donc de l'aide pour trouver le bon pattern pour récupérer le 21.

 

Merci d'avance.


Message édité par ngkreator le 20-07-2009 à 20:33:51
Reply

Marsh Posté le 20-07-2009 à 20:32:23   

Reply

Marsh Posté le 20-07-2009 à 22:15:55    

et si tu explodes sur 'MMMM' et que dans l'item à la position count -1 tu fais ta regexp sur la dernière occurence ?


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 20-07-2009 à 22:59:23    

En fait tu veux dire que je découpe la chaine pour obtenir une sous chaine de la forme: "[...]>21<[...]MMMM" et que je cherche la dernière occurence de ">\d+<"?

 

J'y avais pensé. Mais pour faciliter la mise à jour des regexp dans mon code, je voulais tenter d'obtenir le nombre directement avec 1 seule opération. Après ça n'est peut être pas possible. Je voudrais en être sûr.

 

Merci pour ton aide.


Message édité par ngkreator le 20-07-2009 à 22:59:57
Reply

Marsh Posté le 24-07-2009 à 00:45:03    

et ca ?
 

Code :
  1. '/>(\d+)<.*<.*MMMM)/U'

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed