Page 1 sur 1

Execution de code PHP au sain d'un code PHP

Posté : 27 oct. 2006, 11:21
par littlebusy
Bonjour,

Bonjour, je voudrai savoir s'il est possible de faire executer du code php contenu par exemple dans une chaine de caractères au sain d'un code php.

Exemple de code inutile mais qui illustre bien ce que je veux :

Code : Tout sélectionner

$text = "$message"; $message = "Test"; echo [interpreter($text)];
J'aimerai bien que ce soit le mot Test qui sorte sur la sortie standard.

Merci d'avance de votre aide.

Posté : 27 oct. 2006, 11:31
par Cyrano
Ce bout de code va obligatoirement générer une erreur parce que les lignes 1 et 2 sont inversées et que sur la ligne 1, ta variable $message n'est pas définie.
J'ajoute que tes crochets sur la ligne 3 n'ont rien à faire là et vont également générer une erreur.
Essaye donc :
$message = "Test";
$text = $message;
echo (interpreter($text));
Et pour simplifier encore davantage, tu pourrais supprimer carrément une ligne :
$message = "Test";
echo (interpreter($message));

Posté : 27 oct. 2006, 11:36
par jojolapine
je pense que ce qu'il voulait dire c'était plutôt quelque chose du genre:
$codephp="echo \"bonjour\"; for($i=0;$i<4;$i++) print($i);";
fonction_qui_exécute_php_dans_une_chaine($codephp);
et le résultat serait

Code : Tout sélectionner

bonjour0123
après je sais pas, j'ai peu-être mal compris? :roll:

Posté : 27 oct. 2006, 11:37
par Ryle
Euh... en l'occurence l'ordre n'aurait pas d'importance tant que la chaine n'est pas évaluée (bon ceci dit, avec les guillemets au lieu des apostrophes, elle l'est immédiatement donc ca ne marchera effectivement pas, mais c'est pas une raison ;))

Quant à la fonction que tu cherches, jette un coup d'oeil au fonctionnement de eval() :)

Enfin, s'il s'agit juste de variable et non d'instruction, la syntaxe simplifiée de php te permet d'obtenir simplement la variable d'une valeur :
$toto = 123;
$var = "toto";
echo $$var; // affiche "123"

Posté : 27 oct. 2006, 11:46
par littlebusy
jojolapine a bien compris ce dont j'avais besoin ! et j'ai trouvé mon bonheur sur http://fr.php.net/manual/fr/function.eval.php !

Code : Tout sélectionner

<?php $str = 'Ceci est une $string avec mon $name dedans.<br />'; [...] $string = 'tasse'; $name = 'café'; [...] eval( "\$str = \"$str\";" ); echo $str; ?>
On a sur la sortie standard : Ceci est une tasse avec mon café dedans.

Parfait !