Soyez le premier à donner votre avis sur cette source.
Snippet vu 6 681 fois - Téléchargée 27 fois
<?php function myfunc($param){ // on sépare le nom des paramètres preg_match_all("(.[^\(]*)", $param, $sep); // s'il n'y a pas de paramètres ou de (), c'est que ce n'est pas une fonction // on affiche simplement $param if (count($sep[0]) == 1) echo $param; // si c'est une fonction (prédéfinie ou perso, c'est égal)... else{ // on récupère les paramètres // ici je ne gère pas le cas où un paramètre // est du type "bonjour l'ami" bikoz -> ' <- $sup = array('\'','"'); // on vire les quotes $fct = substr($sep[0][1],1,-1); $arg = str_replace($sup,'',$fct); $arg = split(",",$arg); // et on exécute la fonction return call_user_func_array($sep[0][0],$arg); } } // fonction perso function fctperso($param) { if ($param == 'a') return 'Vous avez écrit "a"'; else return 'Vous avez écrit '.$param; } // une chaine de caractères $name = "bonjour les amis"; // une fonction perso $string = "fctperso('bonjour les amis')"; // une fonction prédéfinie $fct1 = "strrev('bonjour les amis')"; // une autre fonction prédéfinie avec plusieurs paramètres $fct2 = "pow(2, 8)"; // le résultat: echo myfunc($name).'<br />'.myfunc($string).'<br />'.myfunc($fct1).'<br />'.myfunc($fct2); ?>
<?php
$fct1 = "bonjour les amis";
eval( "\$fct1 = $fct1;" );
echo $fct1;
?>
ca, ca va donner une erreur (parse error, unexpected T_STRING). Bien sur $fct1 = "'bonjour les amis'" est la solution mais dans le cas present, celui qui m'a demande la fct ne peux pas changer le contenu de la base de donnees...
Bonne continuation
$fct1 = "strrev('bonjour les amis')";
eval( "\$fct1 = $fct1;" );
echo $fct1;
cela donne bien "sima sel ruojnob"... well... je crois bien que je l'ai dans l'os!
Ben voilà, touché coulé le malik7934!
Et si tu enlevait les guillemets:
eval( "\$fct1 = $fct1;" );
ou
eval( "\$fct1 = ".$fct1.";" );
Quand au $name, c'est car ds ta fonction tu as rajouté "if (count($sep[0]) == 1) echo $param;", mais bon ca peut s'arranger tout en utilisant eval!
<?php
$name = "bonjour les amis";
eval( "\$name = "$name";" );
echo $name;
echo '
';
$string = "fctperso('bonjour les amis')";
eval( "\$tring = "$string";" );
echo $string;
echo '
';
$fct1 = "strrev('bonjour les amis')";
eval( "\$fct1 = "$fct1";" );
echo $fct1;
echo '
';
echo '
';
$fct2 = "pow(2, 8)";
eval( "\$fct2 = "$fct2";" );
echo $fct2;
echo '
';
?>
va me donner
bonjour les amis
fctperso('bonjour les amis')
strrev('bonjour les amis')
pow(2, 8)
et non pas le résultat des fonctions.
Hehe... j'avais d'ailleurs commencé par essayer avec eval... t'as essayé ce que tu disais avant de poster? Peut-être que je ne sais pas employer eval de la bonne manière...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.