我怎么能用PHP回复php?

时间:2011-03-07 06:29:22

标签: php echo

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

<?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”数组转储到页面的 head 部分,如下所示:

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

此方法适用于javascript之类的操作,但是当我尝试添加PHP语句时,它最终会在提供给浏览器的最终页面中作为未解析的PHP。是否有一些特殊的方法来用PHP回显PHP?

8 个答案:

答案 0 :(得分: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
    }
}

然后,使用动态包含,您可以根据需要管理和加载其他代码。

答案 1 :(得分: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");
...

答案 2 :(得分:0)

你在为阵列添加什么?

如果你这样设置php:

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

它不起作用。你必须这样做:

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

答案 3 :(得分:0)

在主文件中执行PHP代码,并将结果转储到$headincludes。没有必要在标题中执行代码,结果不会改变。

还是会吗?如果你真的试图将任意代码注入到其他代码中,那你就错了。

答案 4 :(得分:0)

进入$headincludes

注意:使用include_once

答案 5 :(得分:0)

你尝试过字符串连接吗? 像这样

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

答案 6 :(得分:0)

试试这个:

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

答案 7 :(得分:0)

如果您尝试输出php文件,请确保轻松完成,但您的浏览器无法运行。

所以你需要:

  • 评估php文件并输出结果

  • 以某种方式创建你输出的html文件而不是php文件。

include_once()include()无论如何都是你的朋友,它(就像名字读取一样)包含文件,文件在那个地方被“执行”。如果之前已经包含过,“曾经”版本将不会包含相同的文件两次(如果您执行多个包含,则会很有用,反过来会执行其他包含)。