probleme avec preg_replace

probleme avec preg_replace - PHP - Programmation

Marsh Posté le 11-08-2008 à 13:07:58    

Hello,
 
  J'ai un probleme avec un preg_replace
 
je souhaite extraire la date d'une chaine de caractère :  

$str='// $Id: menu.js 269 2008-08-11 09:47:16Z pcoustillas $
 
sdvsd
 
';
 
echo preg_replace('/.* ([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]) [0-9][0-9]:.*/i','$1',$str);
 


 
mais le résultat n'est pas celui attendu :

2008-08-11
 
sdvsd
 


 
 
des idées ?
 
 
merci


---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Marsh Posté le 11-08-2008 à 13:07:58   

Reply

Marsh Posté le 11-08-2008 à 13:13:22    

c'est normal, ta regex dit exactement: "remplace sur chaque ligne ce qui précède et suit une date par rien du tout".
Sur la deuxième ligne, il n'y a pas de date donc il ne remplace rien.

 

Pour extraire une(des) date(s) en lieu et place de preg_replace, je te recommanderai preg_match(_all).

 

Par ailleurs ta regex peut être simplifier ainsi:

/(\d{4}-\d{2}-\d{2})/


Message édité par anapajari le 11-08-2008 à 13:13:43

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 11-08-2008 à 17:22:19    

pas pensé au preg_replace, mais cette solution ne m'a pas convenu, j'ai du préféré faire au préalable un str_replace pour virer les retour à la ligne.
 
Merci


---------------
Du tofu en Alsace : www.tofuhong.com
Reply

Marsh Posté le 12-08-2008 à 09:26:48    

PierreC a écrit :

pas pensé au preg_replace, mais cette solution ne m'a pas convenu, j'ai du préféré faire au préalable un str_replace pour virer les retour à la ligne.
Merci


Oui c'est aussi une solution faire un str_replace pour pouvoir ensuite faire un preg_replace... Mais je suis pas sur qu'il soit possible de faire plus alambiqué.


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Sujets relatifs:

Leave a Replay

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