IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Analyse de code PHP [RegEx]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Analyse de code PHP
    Bonjour,

    Cette RegEx était censée compter à la fois les include() et require_once() dans une page mais j'ai du faire une erreur.

    Lorsque j'effectue ceci, je ne reçois que des require_once() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php preg_match_all('#require_once\(\'(.+)\'\)|include\(\'(.+)\'\)#', $webPageString, $includesFound); ?>
    Lorsque j'effectue cela, je ne reçois que des include() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php preg_match_all('#include\(\'(.+)\'\)|require_once\(\'(.+)\'\)#', $webPageString, $includesFound); ?>
    Où me suis-je fourvoyé ?

    Merci

  2. #2
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Salut,

    Si pour la démo nous avons
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $webPageString = "include('inc.php');\nrequire_once('req.php');";
    Nous obtenons avec ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('#require_once\(\'(.+)\'\)|include\(\'(.+)\'\)#', $webPageString, $includesFound);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Array(
    	[0] => Array(
    		[0] => include('inc.php')
    		[1] => require_once('req.php')
    	) 
    	[1] => Array(
    		[0] => VIDE 
    		[1] => req.php
    	)
    	[2] => Array(
    		[0] => inc.php
    		[1] => VIDE 
    	)
    )
    Si seul le nom du script à inclure compte, nous pouvons simplifier comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('/(?:require_once|include)\(\'(.+)\'\)/i', $webPageString, $includesFound);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Array(
    	[0] => Array(
    		[0] => include('inc.php')
    		[1] => require_once('req.php')
    	) 
    	[1] => Array(
    		[0] => inc.php
    		[1] => req.php
    	)
    )

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Ceci fonctionne à merveille. J'avais effectivement mal compris le fonctionnement de certaines syntaxes (ainsi que l'utilisation de preg_match_all()).

    Merci beaucoup

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Nouveau petit souci avec une autre RegEx. Je voulais également repérer toutes les fonctions _tr(). J'y arrive très bien à un détail près : s'il y a une partie variable dans mes _tr(), définie avec des {...}, ben là ça ne prend plus. J'ai tenté différentes solutions mais pas moyen de les accepter pour le moment.

    Voici ce que j'utilise pour l'instant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php preg_match_all('#_tr\((\'|\")(.+)(\'|\")\)#', $webPageString, $_trsFound); ?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    _tr('My name is Bond.');       // retourne TRUE.
    _tr('My name is {username}.'); // retourne FALSE.
    ?>

  5. #5
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    Essaie ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all('/_tr\([\'|"](.+?)[\'|"]\);/s', $webPageString, $_trsFound);
    Chaque fonction trouvée est renvoyée dans le tableau $_trsFound[1]

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Très bien, merci beaucoup !!

    Je n'ai que moyennement compris la différence entre ton code et le mien mais il fonctionne, les tutos que je lis sur les RegEx étant assez peu précis sur certains points.

    La doc PHP de preg_match_all() est également relativement obscure pour moi. Ce n'est décidément pas mon point fort.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Outil d'analyse de code
    Par Bloon dans le forum Outils
    Réponses: 8
    Dernier message: 07/08/2007, 09h04
  2. pb eval pour le code php dans une feuille xslt
    Par nipepsi dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 10/09/2004, 11h23
  3. [WSAD 5 ] - Analyse de code
    Par nicoswiss dans le forum Eclipse Java
    Réponses: 8
    Dernier message: 13/08/2004, 10h21
  4. [ Code ] Analyse de code - Attribut Inutile
    Par geegee dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 19/05/2004, 09h07
  5. Cherche lien info... sur l'analyse du code
    Par Alec6 dans le forum Qualimétrie
    Réponses: 3
    Dernier message: 03/03/2004, 14h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo