Salut,

Dans le premier cas tu recherches qqch qui
1. commence par <foo
2. qui est suivit de caract�res (.*)
3. suivit de "hello"
4. suivi de caract�res (.*)
5. termin� par </foo>

Dans le second cas:
1. commence par <foo
2. qui est suivit de caract�res (.*)
3. suivit de go
4. suivi de caract�res (.*)
5. termin� par </foo>

Il est clair que cel� va fonctionner pour tout $str. php ne va pas faire attention au fait que tu fermes ton tag.
Il applique la recherche � toute la variable. Et il trouve ce qu'il cherche m�me s'il y a une possibilit� + petite (en taille).


Tant que tu n'as pas de tag � plusieurs niveau (<foo><foo2>kldsflkjf</foo2></foo>) tu devrais s�parer $str (en deux dans ton exemples). Et ensuite appliquer ta recherche.

N'y a-t-il pas de parser XML dans php?

Bonne journ�e

Magnus

patrick jayet wrote:

Bonsoir � tous!

Petite question sur les expressions r�guli�res sous php. J'ai un petit
probl�me avec la "greediness" du processing. Voici le code:

$str = "<foo>hello there</foo>\n<foo>go there</foo>\n";
echo $str;

<foo>hello there</foo>
<foo>go there</foo>

$str1 = preg_replace("%<foo.*hello.*</foo>%Us","replaced1", $str);
echo $str1;

replaced1
<foo>go there</foo>

$str2 = preg_replace("%<foo.*go.*</foo>%Us","replaced2", $str);
echo $str2;

replaced2


Je ne comprend pas pourquoi j'obtiens 2 choses diff�rentes suivant que je fait un match du 1e tag <foo></foo> ou du 2e. L'option U est sens� d�sactiver le greediness (ce qui est bien le cas lors de la 1e substitution). Mais pour la 2e, �a ne semble pas marcher.

Quelqu'un aurait-il une id�e?

Bon week-end!

Pat

_______________________________________________ gull mailing list [EMAIL PROTECTED] http://lists.alphanet.ch/mailman/listinfo/gull

_______________________________________________
gull mailing list
[EMAIL PROTECTED]
http://lists.alphanet.ch/mailman/listinfo/gull

Répondre à