Execution de code PHP au sain d'un code PHP

Petit nouveau ! | 2 Messages

27 oct. 2006, 11:21

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.
Modifié en dernier par littlebusy le 27 oct. 2006, 11:49, modifié 2 fois.

Mammouth du PHP | 19672 Messages

27 oct. 2006, 11:31

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));
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

ViPHP
ViPHP | 3607 Messages

27 oct. 2006, 11:36

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:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 oct. 2006, 11:37

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"
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Petit nouveau ! | 2 Messages

27 oct. 2006, 11:46

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 !