Bonjour à tous,
J'écris un parseur de fichiers (ou depuis STDIN) PHP afin d'y extraire les fonctions utilisées pour enfin vérifier qu'elles ne sont pas obsolètes.
Donc le script est fonctionnel à ceci près qu'il matche toutes les fonctions, même celles définies par l'utilisateur (du coup pas moyen de vérifier en ligne si elles sont obsolètes...).
De plus je ne souhaite pas matcher les fonctions d'une classe tel que $this->function ou (...)->fonction.
Voici la regexp qui trouve toutes les fonctions :
Dans un premier temps pour ne pas sélectionner les fonctions d'une classe, j'ai testé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part my $regexp = '([\w]{4,})[\s]{0,}\(.*\)';
Alors je crois bien ne pas avoir bien saisi le fonctionnement de (?!), pourtant j'ai bien lu http://search.cpan.org/~rgarcia/perl-5.9.4/pod/perlretut.pod
Code : Sélectionner tout - Visualiser dans une fenêtre à part my $regexp = '((?!>)[\w]{4,})[\s]{0,}\(.*\)';
J'ai réussi en trichant un peu, je matche ausi les signes - et > puis je procède à une 2ème vérification, càd :
Idem il faudrait que je ne matche pas quand la fonction est précédée de "function ".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 my ($ff) = $_ =~ m/$regexp/i; if ( defined $ff && $ff !~ m/>/ ) { (...) }
Y a-t-il une solution en une seule regexp ?
Merci d'avance
Partager