2011-03-07 31 views
0

我正在开发的网站使用“标题”和“页脚”模板。这些模板包含在网站的每个页面上。标题模板打开HTML并包含完整的标头标签,然后打开标签标签。页脚模板关闭正文标记,然后关闭HTML。的基本结构如下:如何使用php回显php?

<?php 
//Set the current page name so it can be highlighted in the menu bar 
$page="Home"; 
//For page-specific HEAD includes 
$headincludes=array("<some type of code>","<some other type of code>"); 
include("/assets/template/header.php"); 
?> 
<!--START PAGE CONTENT--> 
<!--END PAGE CONTENT--> 
<?php 
include("/assets/template/footer.php"); 
?> 

报头模板转储“headincludes”阵列到页面的部为这样:

foreach ($headincludes as $toecho) 
echo $toecho; 

此方法工作得很好的东西,如javascript,但是当我尝试添加一条PHP语句时,它会在浏览器的最后一页中以未分析的PHP结尾。有没有一些特殊的方法来用PHP回显PHP?

+0

你能举一个例子,你如何在'$ headincludes'数组中添加php语句? – 2011-03-07 06:34:21

+0

难道你不能只输出没有''标签的php代码吗? – Shoe 2011-03-07 11:36:34

回答

0

从字符串执行PHP的方式是eval(),但是它很少是正确的工具。

你可以把你需要的PHP放在$headincludes以上,然后把它的输出加到$headincludes

<?php 
//Set the current page name so it can be highlighted in the menu bar 
$page="Home"; 

include 'generators.php'; 

$links = generateLinks('some_arg'); 

//For page-specific HEAD includes 
$headincludes=array("<some type of code>","<some other type of code>", $links); 
include("/assets/template/header.php"); 
... 
+0

我意识到用一种不同的方法来构建是非常简单的 - 只需将事物分解成更多模块。现在,我有一个用于全局页面代码的文件,一个用于页面特定的头部代码的部分,一个用于页面标题和导航的文件,页面主体以及用于页脚的文件。多么不同的观点可以改变事物是多么令人惊讶。 – bnrup 2012-10-17 05:51:37

0

你将什么添加到您的数组?

如果您在设置该php这样的:

$headincludes=array("$var1","$var2"); 

将无法​​正常工作。你所要做的那样:

$headincludes=array($var1,$var2); 
+1

'“$ var1”'实际上应该可以工作,即使将它插入字符串中也是不必要的。 – alex 2011-03-07 06:35:53

0

在你的主文件执行PHP代码和转储结果$headincludes。不需要在头文件中执行代码,结果不会改变。

还是会呢?如果你真的想将任意代码注入到其他代码中,那么你做错了。

0

什么为$headincludes

:使用include_once

0

,您是否试图字符串串连。 这样

$headincludes=array("<your html code>".$variable."<more html>","<more>") 
2

是,eval()(读evil()),但是你最好重新考虑你的方法。也许,如果你正在寻找包括大量的PHP代码,通过文件的数组,可以进一步包括:

// at the beginning of the file 
$includes = array('db.php', 'config.php'); 


// in your header, or footer (whichever is applicable) 
foreach($includes as $file){ 
    if(file_exists($file)){ 
     include $file; // or include_once 
    } 
} 

然后,使用动态包含,您可以管理,并根据需要加载额外的代码。

+0

嗯,没有。 'evil()'只需执行php作为字符串。它不允许你回显PHP。 – Shoe 2011-03-07 11:36:10

0

试试这个:

echo eval('?>html or javascript<?'); 
echo eval('php'); 
+2

由于'echo eval('?>

foobar
<?')'比'echo'
foobar
'或'?>
foobar
<?'更容易? – deceze 2011-03-07 06:51:22

+0

因为它允许php或html在数组$ headincludes = array(“$ x = 2 + 3;”,“?>

foobar
<?”);' – grc 2011-03-07 07:23:50

0

如果您尝试输出php文件,一定要做到这一点很容易,但你的浏览器将无法运行。

所以,你需要:

  • 评估和演示php文件并输出结果

  • 创建莫名其妙的html文件,你会输出,而不是PHP文件。

include_once()include()是你的朋友,无论如何,它会(就像名字读),包括文件,并在那地方的文件是“执行”。 “曾经”版本如果之前已经包含了相同的文件,则不会包含相同的文件两次(如果您进行了多次包含,则又会执行另一次包含)。