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 19/02/2006, 23h13   #1
Membre Expert
 
Inscription : juillet 2004
Messages : 1 033
Détails du profil
Informations forums :
Inscription : juillet 2004
Messages : 1 033
Points : 1 050
Points : 1 050
Par défaut Parser les variables

Bonsoir,

J'ai encore un souci avec les regexp. Ce coup ci c'est pour parser les variables.

Voici le motif :
Code :
1
2
 
'`(\(|\[|\s|\r|\n)?([^(\$this)]\$\w*)\s*(\[|\)|=|,|;| )\s*`siU'
L'idée étant donc de parser toutes les variables sauf $this.
Le truc c'est que ce motif ne trouve pas tout...

en faits il trouve ceci :
_____________
case 9:
$sql = ...
_____________
$query = $GLOBALS[....
____________
$res[5] = substr( $res[3] ,70 , 35);
$res[3] = substr( $res[3] ,0 , 35);
____________

Par contre sa il ne trouve pas :
->mysql_query($sql);
while($res = mysql_fetch_array($query , MYSQL_NUM) )

Et à vrai dire je comprends pas pourquoi vu que j'ai bien indiqué les parenthèses dans le motif

Merci bye
ePoX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2006, 01h08   #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
Boulet, va

On vient d'établir dans le sujet précédent que les parenthèses, dans la classe, ça capture rien du tout :/
Bon, je vais faire mon fainéant...
http://es.php.net/manual/fr/language.variables.php#language.variables.basics
Code :
'/\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/'
Mais ça prend le $this, pour le coup, désolé.


[Edit]
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
 
$string = '_____________
case 9:
$sql = ...
_____________
$query = $GLOBALS[....
____________
$res[5] = substr( $res[3] ,70 , 35);
$res[3] = substr( $res[3] ,0 , 35);
____________
 
Par contre sa il ne trouve pas :
->mysql_query($sql);
while($res = mysql_fetch_array($query , MYSQL_NUM) ) ';
 
if(preg_match_all('/\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/', $string, $matches)){
   echo '<pre>';
   print_r($matches);
   echo '</pre>';
}
 
?>
Affiche :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Array
(
    [0] => Array
        (
            [0] => $sql
            [1] => $query
            [2] => $GLOBALS
            [3] => $res
            [4] => $res
            [5] => $res
            [6] => $res
            [7] => $sql
            [8] => $res
            [9] => $query
        )
 
)
Tu n'as pas les crochets dedans mais ce n'est pas plus mal, du moins je pense. Tout dépend de tes besoins.
__________________
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 08h09.


 
 
 
 
Partenaires

Hébergement Web