PHP包含在一个变量中

PHP包含在一个变量中,php,function,variables,include,Php,Function,Variables,Include,我有一个控制页面输出的函数: $page=“{$title}{$image}{$desc}” 我想在html中包含一个文件“box.php”,它是在$page变量中定义的。我试过这个: $page=“{$title}{$image}”。包括(“box.php”)。“{$desc}” 。。。但它不起作用。如何将php include放入变量中?首先,不要在语句中使用分号。 其次,将include语句用括号括起来 $page = "<div class='media-title'><

我有一个控制页面输出的函数:

$page=“{$title}{$image}{$desc}”

我想在html中包含一个文件“box.php”,它是在
$page
变量中定义的。我试过这个:

$page=“{$title}{$image}”。包括(“box.php”)。“{$desc}”


。。。但它不起作用。如何将php include放入变量中?

首先,不要在语句中使用分号。
其次,将include语句用括号括起来

$page = "<div class='media-title'><h2>{$title}</h2></div>
<div class='media-image'>{$image}</div><div class="inlinebox">" . 
(include "box.php") . "</div><div class='media-desc'>{$desc}</div>";
$page=“{$title}
{$image}”。
(包括“box.php”)。“{$desc}”;
最后:在“box.php”文件中,您需要执行以下操作:

<?php
ob_start();

// your code goes here

return ob_get_clean();
编辑:

我不知道这是否有用,但我认为包含一个文件来获取一段HTML不是一个好的选择。它不可伸缩。你可以试试MVC之类的东西。您可以要求控制器渲染所需内容

$view = $controler->getElement('box');

$page = "<div class='media-title'><h2>{$title}</h2></div><div class='media-image'>{$image}</div><div class="inlinebox">" . $view . "</div><div class='media-desc'>{$desc}</div>";
$view=$controller->getElement('box');
$page=“{$title}{$image}”$看法“{$desc}”;
尝试将代码解耦

我建议您看看一些MVC框架,在我看来,最好的是CakePHP

//将其放在主文件中的某个位置,在
//包含$page的当前函数
函数get\u include\u contents($filename){
如果(是_文件($filename)){
ob_start();
包括$filename;
$contents=ob_get_contents();
ob_end_clean();
返回$contents;
}
返回false;
}
//将其放入当前函数中
$string=get_include_内容('box.php');
$page='{$title}';
$page.='{$image}';
$page.=''$字符串';
$page.='{$desc}';
如何将php包含放入变量中

#hello.php
#file.php
$var=include('hello.php');
echo$var;

不过我通常会避免这样的事情。

我同意你关于MVC的看法,尤其是CakePHP非常棒。但在小型项目中(我想快速完成工作,然后转到更酷的项目),我会使用包含HTML。。。尽管如此,看起来OP使用的是一个模板系统,因此这不是一个小项目,因此MVC肯定会有所帮助,因此你会得到+1。谢谢你的回复,但我觉得这有点过头了。我相信这是一个很好的方法,但我不知道你在说什么:)哈哈,好吧。这是个好结论。我同意你的观点,对于使用框架的小项目来说不是一个好的决定。但是,把事情“组织起来”是件好事。我一直在寻找一个小的路由框架,但没有找到。然后,我为这种情况编写了自己的代码。只编写一次“常规”代码,然后重用这些代码是很重要的。@mattz:也许今天不行,也许明天不行,但你应该阅读一下MVC。它会改变你的编码方式。缩写:挑剔:如果你的控制器正在“渲染”一些东西,那么它就不是“MVC”(或者实际上是PMVC)。那就是MVP了。(模型视图演示者)此功能是真的吗?D:+1我不知道该怎么办,该$page变量已经在函数中。希望这些注释现在能为您阐明这个问题。工作完美:)感谢您的时间和精力2问题:1)这如何回答我的问题?它没有告诉我如何将include语句放入变量中。2) 你为什么要避免这样的事情?@mattz:事实上这确实回答了问题,想想你看到了什么。。。他在
echo
include.@Stephen,但我能在我的问题中这样的变量定义中做吗?当我这样做时,我得到一个错误:
Parse error:syntax error,意外的T_ECHO in…
@mattz:我已经更新了答案,使其更明显地在变量赋值中工作。这样做从根本上说没有什么错,但这样做会使包含的文件依赖于全局或局部范围数据。一般来说,您最好使用一个稍微更完善的系统,该系统可以处理发送模板参数以替换占位符,等等。为了测试它,我将
作为box.php的内容,但它没有做任何事情。我删除了ob_start和ob_clean,它输出了4次单词“testing”。在标题中两次,一次在其应有位置上方,一次在其应有位置下方。
// put this somewhere in your main file, outside the
// current function that contains $page
function get_include_contents($filename) {
    if (is_file($filename)) {
        ob_start();
        include $filename;
        $contents = ob_get_contents();
        ob_end_clean();
        return $contents;
    }
    return false;
}

// put this inside your current function
$string = get_include_contents('box.php');
$page  = '<div class="media-title"><h2>{$title}</h2></div>';
$page .= '<div class="media-image">{$image}</div>';
$page .= '<div class="inlinebox">' . $string . '</div>';
$page .= '<div class="media-desc">{$desc}</div>';
# hello.php
<?php
  return "Hello, World!";
?>

# file.php
$var = include('hello.php');
echo $var;