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 :

Lister des patterns qui ne sont pas dans une liste [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut Lister des patterns qui ne sont pas dans une liste
    Bonjour

    Je recherche à lister dans un fichier php les variables qui n'appartiennent pas à une certaine liste.
    Pour lister les variables, facile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $patterns = '#(\$.+) #Umi';
    preg_match_all($patterns, $str, $foo);
    print_r($foo);
    Comment faire pour ne pas lister celles du tableau $bar ?
    Je tiens à le faire dans l'expression régulière, car j'ai plus de 100 variables dont une grande majorité dans $bar au total, et j'atteins les limites des parenthèses capturantes.

    Merci de votre aide.

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 098
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 098
    Points : 8 207
    Points
    8 207
    Billets dans le blog
    17
    Par défaut
    Pour lister les variables, facile : ...
    Cela ne prend pas en compte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $foo = $bar[0] ; // <= à cause de l'espace après le .+ de ta regexp
    $foo = "\$bar " ; // $bar n'est pas une variable
    $foo = '$bar ' ; // Idem
    // $bar (idem)
    /*
        $bar (idem)
    */
    // Et sûrement bcp d'autres cas que j'oublie
    Plus des cas plus tordus rendant la var difficilement identifiable en une passe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $foo = "...{$bar}..." ;
    A ta place je laisserais tomber les regexps et j'utiliserais token_get_all( ) http://fr.php.net/tokenizer
    Ensuite tu peux utiliser in_array( ), voire array_diff( ) pour récupérer les noms de variables qui t'intéressent
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Merci, j'ignorais l'existence de token_get_all( ). Après, c'est tout simple en effet avec in_array.

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

Discussions similaires

  1. supprimer les fichiers qui ne sont pas dans une liste
    Par jeorcal dans le forum Langage
    Réponses: 7
    Dernier message: 15/01/2011, 10h03
  2. Lister les enregistrements qui ne sont pas dans une table
    Par toss.net dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/10/2010, 11h25
  3. Requete sur des champs qui ne sont pas dans une autre table
    Par jean christophe dans le forum Débuter
    Réponses: 4
    Dernier message: 20/05/2010, 18h05
  4. obtenir des entrees qui ne sont pas dans une table
    Par firejocker dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 26/12/2007, 23h07

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