executer le code contenu dans une variable

executer le code contenu dans une variable - PHP - Programmation

Marsh Posté le 21-10-2004 à 12:21:51    

Bonjour tout le monde,
 
j'ai une question à vous poser, je vais essayer d'etre clair!
J'ai une variable mixte qui contient du texte et des instructions php comme par exemple
$text = "ceci est un test de phpinfo: phpinfo()";
 
Je voudrais savoir s'il est possible d'afficher le texte, mais aussi d'exécuter le code?
 
Je ne vois pas du tout comment faire pour que les deux en meme temps marchent!
 
Merci d'avance les gens! :D
 
+

Reply

Marsh Posté le 21-10-2004 à 12:21:51   

Reply

Marsh Posté le 21-10-2004 à 12:38:51    

$info=phpinfo();
$text = 'ceci est un test de phpinfo: '.$info;
 
j'ai bon là ???


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 21-10-2004 à 12:48:10    

http://php.net/eval


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 21-10-2004 à 12:50:32    

et le commentaire le plus interessant:

Citation :

Keep the following Quote in mind:
 
If eval() is the answer, you're almost certainly asking the
wrong question. -- Rasmus Lerdorf, BDFL of PHP


Message édité par the real moins moins le 21-10-2004 à 12:50:37

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 21-10-2004 à 12:55:04    

the real moins moins a écrit :

et le commentaire le plus interessant:

Citation :

Keep the following Quote in mind:
 
If eval() is the answer, you're almost certainly asking the
wrong question. -- Rasmus Lerdorf, BDFL of PHP




 
+ 10 000
 
je me demande même pourquoi une telle fonction existe [:djswad]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 21-10-2004 à 12:56:37    

bah ça peut dépanner , ça reste un langage de script hein [:spamafote]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 21-10-2004 à 13:05:21    

the real moins moins a écrit :

bah ça peut dépanner , ça reste un langage de script hein [:spamafote]


 
nous, les cowboys du php, n'avons pas besoin de ce type de fantaisie [:djswad]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 21-10-2004 à 13:10:52    

coboys [:aloy]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 21-10-2004 à 13:20:50    

eval c tres bien ca!! merci, oué ca devrait marcher comme ca je pense!
 
G rien compris à l'histoire du commentaire par contre! lol

Reply

Marsh Posté le 21-10-2004 à 13:37:44    

eval ne marchera pas, hélas. La variable contient du texte sans instruction php et paar ci par la du code php, il fo ke le texte soit affiché et le code exécuté!
 
Je ne vois vraiment pas comment faire! :-(
help

Reply

Marsh Posté le 21-10-2004 à 13:37:44   

Reply

Marsh Posté le 21-10-2004 à 14:04:48    

kikoo lol mdr


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 21-10-2004 à 15:35:13    

mais encore??

Reply

Marsh Posté le 21-10-2004 à 15:37:20    

... essaie de commencer par comprendre le commentaire ...


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 21-10-2004 à 15:38:47    

alors, il marche bien ton "script" ?  :pt1cable:

Reply

Marsh Posté le 21-10-2004 à 15:41:53    

oué bon laisse tomber smaragdus, je ne pense pas que tu aies la réponse.
 
Bref quelqu'un a une vrai solution?

Reply

Marsh Posté le 21-10-2004 à 17:48:08    

elle va pas bien la mienne du début ??? ;)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 21-10-2004 à 23:50:16    

bob007 a écrit :

J'ai une variable mixte qui contient du texte et des instructions php comme par exemple
$text = "ceci est un test de phpinfo: phpinfo()";
 
Je voudrais savoir s'il est possible d'afficher le texte, mais aussi d'exécuter le code?...


 
edit: réponse autocensurée pour d'évidentes raisons d'hygiène!


Message édité par ACut le 22-10-2004 à 01:04:10
Reply

Marsh Posté le 22-10-2004 à 00:11:39    

c'est quoi ce psychopate? t'as du temps à perdre? [:itm]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 22-10-2004 à 00:15:21    

c'est quoi ce flan, ossecours!!!! [:lacuna coil]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 22-10-2004 à 00:55:07    

Il posait une question, j'essayais de répondre...
 
Et puis le drame! Je ne sais pas comment c'est arrivé, les mots se sont mis à galoper tous seuls sur le clavier. Putain sur le moment je me rendais même pas compte, maintenant j'ai honte. Dès demain j'appelle un psy.
 
En tout cas merci les gars de m'avoir réveillé de ce cauchemar.
 
Nous prions bien sûr le lecteur de considérer mes effroyables propos comme non avenus. Gageons qu'un vigile d'HFR les effacera dans les meilleurs délais afin de préserver la pureté de notre culture.

Reply

Marsh Posté le 22-10-2004 à 00:58:51    

ACut a écrit :

Il ne peut pas y avoir de solution générique à ce problème. En effet, il n'y a aucun moyen univoque de séparer, dans une chaîne, ce qui d'un côté est censé être "muet" pour l'interpréteur, de l'autre ce qui est censé être effectivement interprété comme du code PHP.
 
Par exemple, dans la châine "5 est le résultat de 3 + 2", rien ne dit au programme s'il doit ou non interpréter la séquence 3 + 2. Ainsi, de nombreuses instructions ou fonctions PHP peuvent apparaître tout à fait fortuitement dans un texte et il n'appartient qu'au producteur du texte de décréter où elles commencent et se terminent.
 
Bref, s'il s'agit de trouver un algorithme global pour répondre à la question posée, il est indispensable d'utiliser un MARQUAGE conventionnel à l'intérieur de la chaîne à mouliner. Tiens, par exemple, le balisage <?...?>...
 
Dès l'instant qu'un tel marquage existe, le problème peut en effet être traité via eval(), en blindant la détection et le traitement des erreurs. Le travail consiste à sortir les segments marqués (une expression régulière fait généralement l'affaire), à les interpréter puis à les reloger dans la chaîne une fois calculés. Cela suppose en passant que les éléments PHP "produisent" du contenu convertible en chaîne de caractères -- sans parler des problèmes de variables locales,globales, etc., qui pourraient être invoquées dans le code.
 
Je ne suis pas d'accord avec les commentaires qui tendent à déprécier la fonction eval(). Dans les cas très spécifiques où l'on cherche à interpréter ou interagir dynamiquement avec un code imprévisible fourni par l'utilisateur du programme, eval() est un outil redoutable en ce qu'il ouvre la voie à une sorte de "méta-traitement" et permet des opérations particulièrement sophistiquées.
 
Les langages interprétés ont beaucoup de défauts, alors concédons-leur quelques originalités bien fertiles. A mon sens, c'est le cas de eval(), quoi qu'en disent les puristes de l'algorithmique.
 
(Dans le même ordre d'idée, il y a eu une époque où l'on décriait ou du moins sous-estimait les "pointeurs de fonctions" en C. Sans eux, je ne pense pas que les méthodes virtuelles et le polymorphisme en général existeraient en C++ -- NB. Je précise qu'eval et les pointeurs de fonction sont sans rapport, j'observe juste une analogie de comportement vis-à-vis d'eux)


 
vous reprendrez bien un p'tit coup de fouet ? [:maitresse]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 22-10-2004 à 01:00:45    

Nan c'est bon je viens d'expliquer combien je me mortifiais d'avoir écrit des choses pareilles...
 
Pas taper...

Reply

Marsh Posté le 22-10-2004 à 01:02:02    

:D


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed