Interpreter du php avec une fonction preg_match

cedriclomb Messages postés 275 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 27 avril 2010 - 12 nov. 2006 à 15:48
DiGhan Messages postés 239 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 3 juin 2010 - 13 nov. 2006 à 20:32
Bonjour,

Voila le probleme

        function traiter_php()
            {
             $pattern = "(<\?php\b)(.*)( \?>)";
             $recherche="<?php echo 'oh'; ?>";
            preg_match($pattern, $recherche,$regs);
             eval($regs[1]);
            }

Ma pattern est fausse pourquoi c'est koi la réponse ??
je cherche bien sur une chaine de type <?php (.*) ?>

Mais j'ai que ca
Warning: Unknown modifier '(' in c:\documents and settings\cedric\bureau\projettutv2\class\template.php on line 365
Notice: Undefined offset: 1 in c:\documents and settings\cedric\bureau\projettutv2\class\template.php on line 367

Merci d'avance,

2 réponses

audayls Messages postés 373 Date d'inscription samedi 9 juillet 2005 Statut Membre Dernière intervention 11 août 2008
12 nov. 2006 à 18:44
Salut,
Ton patern n'est pas correct :
function traiter_php() {
    $pattern = '`<\?php(.+?)\?>`sim';
    $recherche = '<?php echo \'oh\'; ?>';
    preg_match($pattern, $recherche,$regs);
    eval($regs[1]);
}

For every choice, a consequence (Fable)
0
DiGhan Messages postés 239 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 3 juin 2010 1
13 nov. 2006 à 20:32
Hello,

Dans ce cas, je ne pense pas que le flag 'm' soit nécéssaire puisque la capture ne se fait pas en multiligne, mais dés lors que notre expression régulière rencontre un '<?php'. De plus, il est possible que la chaine d'entrée soit constituée de retour chariot d'oû l'utilisation du flag 's' et de l'instruction dot(.). Ce qui donne:

function eval_php($pString) {
$pattern = '#<\?php.(.*).\?>#is';
preg_match($pattern,$pString,$matches);
eval($matches[1]);
}
0
Rejoignez-nous