PHP : Passage de code php dans une variable

Résolu/Fermé
Laurraine - 19 nov. 2009 à 18:35
 Laurraine - 19 nov. 2009 à 23:27
Bonjour à tous,

J'aimerai passer du code php php comme argument d'une fonction existante c'est-à-dire :

function faireUnTest($codeDuTest) {
if(interpréter_le_contenu_de_la_variable_comme_code_php($codeDuTest)){
(...)
}
}


Par exemple

faireUnTest("1+1==2") ;


Doit donner le même résultat que :

if(1+1==2){
(...)
}
}


Merci beaucoup !!!!
A voir également:

5 réponses

Bonjour

Ton premier code était presque bon, juanou :
<?php
function faireuntest ($test) {
   if ( eval("return(".$test.");") ) echo 'ok';
   else echo 'pas ok';
}
faireuntest( "5+5===10" );
?>
1
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 58
19 nov. 2009 à 19:04
Tu as essayé avec eval ? (https://www.php.net/manual/fr/function.eval.php

<?php

function faireuntest ($test) {
   if ( eval($test) ) echo 'ok';
   else echo 'pas ok';
}

faireuntest( "5+5===10" );

?>


Si mon code fonctionne, ça devrait afficher "ok".


ps : attention toutefois avec eval. On recommande souvent de ne pas y avoir recours. On dit même que "eval is evil" !
0
Résultat :

Parse error: syntax error, unexpected $end in /home/_____/public_html/_____/_____/Php/_____/_____/_____.php(4) : eval()'d code on line _____
pas ok
0
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 58
19 nov. 2009 à 19:45
ah... mince...

Mais j'ai trouvé autre chose.
Ca fait un peu bidouille mais ça a l'air de marcher :

<?php
$i = 0;
function faireuntest ($test) {
   global $i;
   eval( 'function tmp'.$i.'() {return '.$test.';}; $tmp = tmp'.$i.'();' );
   if ( $tmp ) echo "ok<br />";
   else echo "pas ok<br />";
   $i++;
}

faireuntest("3+3==6");
faireuntest("3+3==7");

?>


ça devrait afficher :
ok
pas ok
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MERCI BEAUCOUP JUANOU ET LE PÈRE POUR CES TROIS CODES !!!!

Ca m'a bien fait avancer !
0