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 :

Motif (expression regulière)


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 43
    Points : 20
    Points
    20
    Par défaut Motif (expression regulière)
    Bonjour,
    je planche depuis un bail là sur un motif, j'y arrive pas.
    en fait je voudrais trouver toutes les expressions du genre :
    $---KeyAccess---="---"; (avec un ! possible avant le =)

    où les --- peuvent être n'importe quoi ou rien.

    Exemples possibles :
    $MainKeyAccess="dgGFE45sdThc";
    $KeyAccessPremier!="zs*-è_ç^$*ùd";
    $KeyAccess!="li638dfdsfc54"

    voilà, pour l'instant j'ai le motif qui me permet de trouver ça :
    $KeyAccess="li638dfdsfc54";

    Le voici : #\$KeyAccess!="([^"]+)"#i

    ... Voilà je galère donc si quelqu'un peut m'aider ! ça serait super sympa !

    merci

  2. #2
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #\$.*KeyAccess[^!=]*!?="([^"]*)"#Ui
    J'ai remplacé ton "+" par une "*" car tu dis "ou rien" mais tu es libre de rétablir le "*"
    PS : Expression non testée :/

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 43
    Points : 20
    Points
    20
    Par défaut
    merci beaucoup c'est bon apparement. sauf pour une exception.
    j'ai cette ligne de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!isset($KeyAccess) || ($KeyAccess!="li638dfdsfc54") ){die( "<font style='color:#ff0000' > BStemplates NOT ALLOWED  </font>");};
    et le motif me trouve à l'intérieur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $KeyAccess) || ($KeyAccess!="li638dfdsfc54"
    au lieu de seulement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $KeyAccess!="li638dfdsfc54"
    j'ai essayer de mettre ( dans [^!=]
    mais ça ne fait rien, pourtant je pensait que ça allait interdire les parenthèses fermantes si je le mettais après le signe ^...

    ^^

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 43
    Points : 20
    Points
    20
    Par défaut
    pleasseeeeee ^^ help
    merci...

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 43
    Points : 20
    Points
    20
    Par défaut
    personne n'a une idée ?

  6. #6
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Je ne comprends pas ta question car ce motif conctionne avec ce que tu as donné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    $string = 'if(!isset($KeyAccess) || ($KeyAccess!="li638dfdsfc54") ){die( "<font style=\'color:#ff0000\' > BStemplates NOT ALLOWED  </font>");};';
     
    preg_match_all('#\$.*KeyAccess[^!=]*!?="([^"]*)"#Ui', $string, $matches, PREG_SET_ORDER);
     
    echo '<pre>';
    print_r($matches);
    echo '<pre>';
     
    ?>

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 43
    Points : 20
    Points
    20
    Par défaut
    ben je ne comprends pas, moi la recherche avec le motif :
    #\$.*KeyAccess[^!=]*!?="([^"]*)"#Ui

    me donne comme résultat :
    $KeyAccess) || ($KeyAccess!="li638dfdsfc54"
    au lieu de me donner :
    $KeyAccess!="li638dfdsfc54"

    dès qu'il croise dans le code du fichier le mot $KeyAccess, apparement il le prend. alors que dans ce cas là il y a : $KeyAccess) || ... il ne devrait pas le prendre car ce n'est pas suivit de ! ou = puis des doubles cotes "..."

    tu vois ce que je veux dire ? en fait il me prend trop de chose dans ce cas là.

    mon code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(is_file($root_dir))
    {
    $items2 = scanFile($root_dir, '#\$.*KeyAccess[^!=]*!?="([^"]*)"#Ui'); 
    ...
    qui appelle cette fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      function scanFile($file, $motif) 
       {
    	$code = (file_get_contents($file));
    	$items = array();
    	preg_match_all($motif,$code,$out);
    	$nb=count($out[0]);
    	for($i=0;$i<$nb;$i++)
    	{
    	  $items[]=($out[0][$i]);
    	}
          return $items;
       }
    puis j'exploite le résultat retourné dans le tableau $item2;
    et à l'affichage il me sort :
    $KeyAccess) || ($KeyAccess!="li638dfdsfc54"
    alors qu'il en devrait pas prendre le début :
    $KeyAccess) || (


    ... telle est la question ! comment faire pour qu'il commence après la parenthèse ouvrante dans ce cas là.

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    As-tu testé ce que je t'ai donné en dernier ?
    Cet exemple, ci-dessus, ne retourne pas les variables vides, puisqu'elles ne sont pas suivies d'un signe = et qu'il n'y a pas non plus de guillemets doubles.
    Je ne vois toujours pas le problème.

    Ah, oui, le premier index de $matches contiendra toujours l'expression entière, tu n'y pourras rien. Je ne sais pas si c'est de cela que tu parles...

Discussions similaires

  1. Recherche recursive à l'aide des expressions reguliére
    Par titoff dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/12/2005, 16h42
  2. [RegEx] aide pour une expression regulière
    Par hugo123 dans le forum Langage
    Réponses: 5
    Dernier message: 24/11/2005, 15h41
  3. ET dans une expression regulière
    Par kesako dans le forum Langage
    Réponses: 4
    Dernier message: 10/11/2005, 12h57
  4. Problème expression regulière ??
    Par panaone dans le forum Langage
    Réponses: 5
    Dernier message: 18/08/2005, 13h41
  5. Variables et Expression Regulière
    Par Temari dans le forum Langage
    Réponses: 5
    Dernier message: 05/08/2005, 01h55

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