[gull] expressions régulières sous php

patrick jayet jayetp at student.ethz.ch
Sun Dec 5 14:37:02 CET 2004


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello Magnus!

Merci pour ta réponse.

| 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.

Mais justement, dans mes expressions régulières, j'utilise le paramêtre
U, ce qui veut dire que je lui indique d'être par défault non greedy
(non gourmant). Donc il devrait chercher les chaînes de charactère
minimales pour (.*) afin de trouver un match. Et cela fonctionnne
effectivement pour ma 1e des 2 expression (autrement il matcherait
également la totalité de <foo>..</foo><foo>..</foo>, or il ne match que
le 1e tag <foo>..</foo>).

Y a-t'il un autre prob dans mon expressions régulière?

Bonne journée!

Pat


|> $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
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)

iD8DBQFBsw7LDdcPKzlCXVMRAuTRAKC19XTeEw/mnCNpz/RYdv9E/hE4CQCfVqof
Os86MROJWanvMtPZR8Cd2yc=
=Fcjm
-----END PGP SIGNATURE-----



More information about the gull mailing list