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 :

Détecter des chaine de type: mafonction(mesparamètres) [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 57
    Points
    57
    Par défaut Détecter des chaine de type: mafonction(mesparamètres)
    Bonjour,

    je suis en train de craker j'arrive pas à faire exactement ce que je veux. C'est à dire détecter des chaines de types mafonction(mesparamètres)

    et stocker tout ca dans un tableau
    tab[0] = mafonction
    tab[1] = paramètre 1
    ....
    tab[x] = paramètre x

    exemple: date(-1)

    tab[0] = date
    tab[1] = -1


    j'avais fait ca mais bon sans grand résultat....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tableau_resultat = preg_split('#(.*)\(([ ]*([0-9]*)[ ]*,){3}([ ]*([0-9]*)[ ]*)\);#i', 'TODAY(1)');
     
    var_dump($tableau_resultat);
    Si quelqu'un peut m'aider

    merci d'avance

    Laurent

  2. #2
    Membre régulier Avatar de knoodrake
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 86
    Points : 86
    Points
    86
    Par défaut
    les parametres de ta fonction peuvent être n'importe quoi ? ( numériques, chaines entres quotes, flotants, variables, ... )
    Peut y'avoir plusieurs parametres ?

    déja un début:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /\W*([A-Za-z0-9_]*)\W*\(\W*([^()]*)\W*\)/
    donne bien (pour date (-1 ) par exemple):
    [1] => date
    [2] => -1
    ( testé avec KRegExp )

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 57
    Points
    57
    Par défaut
    les parametres de ta fonction peuvent être n'importe quoi ? ( numériques, chaines entres quotes, flotants, variables, ... )
    Peut y'avoir plusieurs parametres ?

    oui comme n'importe qu'elle fonction de type PHP/JAVA/..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /\W*([A-Za-z0-9_]*)\W*\(\W*([^()]*)\W*\)/
    donne bien (pour date (-1 ) par exemple):
    [1] => date
    [2] => -1
    ( testé avec KRegExp )

    étrange car chez moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $tableau_resultat = preg_split('/\W*([A-Za-z0-9_]*)\W*\(\W*([^()]*)\W*\)/', 'date (-1,12)');
     
    var_dump($tableau_resultat);
    me retourne ca:

    array(2) { [0]=> string(0) "" [1]=> string(0) "" }


    laurent

  4. #4
    Membre régulier Avatar de knoodrake
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    86
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2007
    Messages : 86
    Points : 86
    Points
    86
    Par défaut
    voui avec preg_split, mais avec preg_match_all()..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    knoodrake@knoodrake-laptop:~$ php -r '$r=array();preg_match_all("/\W*([A-Za-z0-9_]*)\W*\(\W*([^()]*)\W*\)/","date(foo, bar, 3, 2.5, \$x)",&$r  ); echo "nom_fonction=".$r[1][0]."\n"; echo "arguments=\n"; print_r(explode(",",$r[2][0])); echo "\n";'
    nom_fonction=date
    arguments=
    Array
    (
        [0] => foo
        [1] =>  bar
        [2] =>  3
        [3] =>  2.5
        [4] =>  $x
    )
    preg_split c'est pour éclater une chaine selon un séparateur donné (en l'occurence identifié par une expr. rationelle ). Visiblement, tu t'est trompé de fonction

    Note: l'expression reg. que je t'ai donné n'est qu'une esquisse off course ! par exemple, elle doit poser des problèmes si un des arguments est une chaine qui contient une parenthèse !

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    65
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 65
    Points : 57
    Points
    57
    Par défaut
    oui effectivement j'ai fourré dans le choix des fonctions... (il était tard :p)

    sinon je ne vois pas l'intérêt, pour l'utilisation que je veux en faire, de mettre dans parenthèses dans les paramètres.

    Donc ce Regex me vas parfaitement !

    merci bcp

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

Discussions similaires

  1. Des chercheurs du MIT mettent au point un algorithme pour détecter les erreurs du type débordements d'entier
    Par Stéphane le calme dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 01/04/2015, 13h11
  2. Réponses: 6
    Dernier message: 03/07/2010, 01h41
  3. [RegExp] Détecter des combinaisons dans une chaine une par une
    Par vermine dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/06/2010, 13h22
  4. Réponses: 4
    Dernier message: 18/11/2008, 10h40
  5. Réponses: 4
    Dernier message: 29/06/2007, 10h00

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