1

yop,

L'un de vous sait-il s'il est possible de "négativer" (?) une séquence dans une regexp en php (avec preg_match_all obligatoirement) ? Par exemple je voudrais matcher dans un code js tous les appels à la méthode "open", mais pas si l'objet est "window". J'en suis rendu là (vous noterez que je ne connais pas du tout le fonctionnement de (?: et (?! grin) :

preg_match_all ('@(?:(?!window))\.open@', ...) : marche pas, ça matche tous les .open même window.open
preg_match_all ('@((?:(?!window).)*)\.open@', ...) : timeout, le script ne termine jamais (?!)
preg_match_all ('@([^w].....|.[^i]....|..[^n]...|...[^d]..|....[^o].|.....[^w])\.open@', ...) (tripo) : process httpd à 99% de cpu, j'ai failli planter grin

des suggestions ? ^^
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

2

3

une petite précision : faites gaffe si vous testez, je sais pas si c'est un bug de php ou autre mais j'ai failli être obligé de rebooter avec les deux dernières et je suis peut-être pas le seul ^^
(21:43:43) (Vertyos) bon en plus ça marche même pas
(21:43:57) (Vertyos) ça a fait monter httpd.exe à 99% de cpu, mais à part ça...
(21:47:10)     —› Quit: yAro quitte IRC (Ping timeout)
(21:47:42) (Microbug) visiblement ça fait pareil chez yaro grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

preg_match_all ('@(?:(?<!window))\.open@', ...) smile
avatar

5

ça marche merci, t'as une page avec ces opérateurs particuliers ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

Bah, il y a déjà la documentation de PHP smile http://fr.php.net/manual/fr/regexp.reference.php
Je n'ai pas cherché ailleurs.
avatar

7

ah oué en effet j'aurais du commencer par chercher là, thx grin

(pour info le "(?:" a l'air de servir à rien avec cette syntaxe, donc '@(?<!window)\.open@' est suffisant)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)