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 10/07/2006, 21h34   #1
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
Par défaut BUG : preg_replace et match

(re)Bonjour,

Je pense avoir trouvé un bug sur les fonction preg_replace et preg_match...

historique de la découverte : http://www.developpez.net/forums/sho...d.php?t=179554

En effet, il semblerai que l'on ne puisse pas utiliser les paramètres du style '\\1' dès lors qu'il y a un signe $ dans les paramètres de ces fonctions...

En consultant l'aide de ces fonctions, j'ai vu que l'on pouvait appeler de manière obsolète les valeurs de la façon suivante : $1 si on veut recupérer la 1er parenthese dont l'expression correspond exactement au masque... et visiblement, cela doit poser un problème à l'interpréteur dès le moment où on utilise les valeurs récupérées (en utilisant indifférement $ ou \\) dans une méthode ou un index de tableau...

bon, comme je suis sur que j'ai pas été très clair, les exemples :

passons aux morceau de code ci dessous la chaine 'transforme moi [CC:1] s'il te plait !'

Code :
$text = preg_replace("#(\[CC:)([0-9]*?)(\])#is", transforme('\\2'), $text);
aucun problème...

Code :
1
2
$tab = array('a','b','c','d');
$text = preg_replace("#(\[CC:)([0-3]*?)(\])#is", $tab['\\2'], $text);
ça, ça ne marche pas...

Code :
$text = preg_replace("#(\[CC:)([0-9]*?)(\])#is", $this->transforme('\\2'), $text);
ne marche pas non plus...

J'ai beau cherché... je ne vois que le $ placé en début de 2ème paramètre qui puisse être responsable du non résultat... hypothèse d'autant plus crédible qu'il existe (pour la compatibilité descendante) une méthode de récupération des valeurs par $...

Alors ma question est : est-ce que je me fourvois complétement, et que je passe a coté de certaines subtilité du preg ? ou bien y'a t-il vraiment un bug a ce niveau là, et auquel cas, est-il possible de le contourner ?
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/07/2006, 21h52   #2
Membre expérimenté
 
Inscription : mai 2002
Messages : 673
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 673
Points : 532
Points : 532
ok, la réponse ici :
http://www.developpez.net/forums/sho...d.php?t=179554

Visiblement, d'autre ont déjà eu ce problème mouhahaha
gloubi est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h37.


 
 
 
 
Partenaires

Hébergement Web