Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/03/2006, 12h00   #1
Invité régulier
 
Inscription : juillet 2005
Messages : 43
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 43
Points : 7
Points : 7
Envoyer un message via MSN à Smash34
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
Smash34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2006, 12h10   #2
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Code :
#\$.*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 :/
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2006, 13h39   #3
Invité régulier
 
Inscription : juillet 2005
Messages : 43
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 43
Points : 7
Points : 7
Envoyer un message via MSN à Smash34
merci beaucoup c'est bon apparement. sauf pour une exception.
j'ai cette ligne de code :

Code :
if(!isset($KeyAccess) || ($KeyAccess!="li638dfdsfc54") ){die( "<font style='color:#ff0000' > BStemplates NOT ALLOWED  </font>");};
et le motif me trouve à l'intérieur :
Code :
$KeyAccess) || ($KeyAccess!="li638dfdsfc54"
au lieu de seulement :
Code :
$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 ^...

^^
Smash34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/03/2006, 17h15   #4
Invité régulier
 
Inscription : juillet 2005
Messages : 43
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 43
Points : 7
Points : 7
Envoyer un message via MSN à Smash34
pleasseeeeee ^^ help
merci...
Smash34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 11h09   #5
Invité régulier
 
Inscription : juillet 2005
Messages : 43
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 43
Points : 7
Points : 7
Envoyer un message via MSN à Smash34
personne n'a une idée ?
Smash34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 12h17   #6
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Je ne comprends pas ta question car ce motif conctionne avec ce que tu as donné :

Code :
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>';
 
?>
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 14h45   #7
Invité régulier
 
Inscription : juillet 2005
Messages : 43
Détails du profil
Informations forums :
Inscription : juillet 2005
Messages : 43
Points : 7
Points : 7
Envoyer un message via MSN à Smash34
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 :
1
2
3
4
if(is_file($root_dir))
{
$items2 = scanFile($root_dir, '#\$.*KeyAccess[^!=]*!?="([^"]*)"#Ui'); 
...
qui appelle cette fonction :

Code :
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à.
Smash34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/03/2006, 17h45   #8
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
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...
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h51.


 
 
 
 
Partenaires

Hébergement Web