Bonjour,
Alors voila je cherche à créer un PARSER style BB mais qui convertirais un code vers du php.
Pour le moment je calle sur la declaration des variables.
En gros, j'ai un text :
J'aimerais récuperer var1 var2 var3
Code : Sélectionner tout - Visualiser dans une fenêtre à part DECLARE var1,var2,var3;
J'utilise pour cela une expression réguliére et preg_match.
Le probléme est que la variable de retour de preg_match ne contient que la derniere occurence, à savoir var3.
Voila je met le code de mon appli :
La RegEx
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $this->varregex = '[a-z]\w*'; // 1_alpha some_alphanum atleast1_space $this->declareregex = '/'. // delimiter / '^\s*declare\s+'. // some_spaces 1_"DECLARE" atleast1_space "(?:($this->varregex)\s*,\s*)*".// atleast1_varregex(captured) some_space comma some_space "(?:($this->varregex)\s*\s*)$". // must end with a var declaration without a comma '/i'; // delimiter / + case insensitive option
View :
Test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 echo("<h3>Code : </h3>"); $code = $this->input->post('code'); echo($code); echo('<br>'); $lines = explode(';',$code,-1); echo("<h3>Lines : </h3>"); print_r($lines); echo("<br><h3>Validate : </h3><hr><hr>"); foreach ($lines as $line ) { $this->simplescript->Validateline($line); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 $t; $i = preg_match($this->declareregex,$line,$t); echo("<b>RegEx : </b>$this->declareregex<br>"); echo("<b>Line : </b><font color='blue'>/</font>$line<font color='blue'>/</font>"); if ($i) { echo ( '<font color="green"> (Valide) </font>'); } else { echo ( '<font color="red"> (Not Valide) </font>'); } echo('<br>'); print_r($t); echo('<br>'); echo('<hr>'); echo('<br>'); return $i;




Répondre avec citation






Partager