2009-08-12 4 views
0

J'ai essayé quelques méthodes pour essayer de faire fonctionner ça mais pas de chance!heredoc avec l'exécution du code eval

J'ai une page comme (exemple):

<?php 
$jj = <<<END 
?> 
<h1>blah blah</h1> 
<p> blah blah blah blah blah blah blah <?php include("file.php"); ?> blah blah</p> 
<?php 
END; 
eval('?>'.$jj.'<?php '); 
?> 

cela provoque pas de sortie afin que jamais, ne peut pas penser à une solution!

Répondre

3

Cela ne fonctionnera pas car eval attend seulement du code PHP (c'est-à-dire non entouré par les balises <? Php? >), donc l'appel à eval() échouera probablement avec une erreur d'analyse.

Je suggère d'utiliser à la place en mémoire tampon de sortie, par exemple:

<?php 
//start output buffering, anything outputted should be stored in a buffer rather than being sent to the browser 
ob_start(); 
?> 

<h1>blah blah</h1> 
<p> blah blah blah blah blah blah blah <?php include("file.php"); ?> blah blah</p> 

<?php 
//get contents of buffer and stop buffering 
$content = ob_get_clean(); 
echo $content; 
?> 
+0

le contenu doit être mis dans une chaîne ... est là de toute façon autour de faire cela? –

+1

Vous pouvez le mettre dans un heredoc, mais il ne sera pas analysé. Cependant, il utilise eval après ... –

+0

@johnnnnnnnnnnnnnnny: $ content contiendra la chaîne évaluée renvoyée par le tampon de sortie. –