【发布时间】:2014-02-17 03:10:25
【问题描述】:
$markup_array = array();
$name_array = array();
while($array = $query->fetch_assoc()) {
$name_array = $array['plugin_name'];
$markup = '{$'.$array['plugin_name'].'}';
}
$callback = str_replace($markup, include("plugins/".$name_array."/".$name_array.".php"), $buffer);
这是完整的代码
function callback($buffer)
{
GLOBAL $mysqli;
GLOBAL $db_prefix;
GLOBAL $parameters;
$query = $mysqli->query("...query...");
$count = $query->num_rows;
if($count > 0) {
$markup_array = array();
$name_array = array();
while($array = $query->fetch_assoc()) {
$name_array = $array['plugin_name'];
$markup = '{$'.$array['plugin_name'].'}';
}
$callback = str_replace($markup, include('plugins/'.$name_array.'/'.$name_array.'.php'), $buffer);
}
return $callback;
}
function load_theme() {
GLOBAL $mysqli;
GLOBAL $db_prefix;
GLOBAL $parameters;
$query = $mysqli->query("...query...");
$count = $query->num_rows;
if($count > 0) {
$theme_parameters = array();
$array = $query->fetch_assoc();
$theme_parameters['ID_THEME'] = $array['ID_THEME'];
$theme_parameters['theme_name'] = $array['theme_name'];
$theme_parameters['theme_version'] = $array['theme_version'];
$theme_parameters['theme_folder'] = 'themes/'.$array['theme_folder'].'/';
$theme_parameters['theme_status'] = $array['theme_status'];
//loading pages
ob_start("callback");
require_once($theme_parameters['theme_folder'].'/header.php');
require_once($theme_parameters['theme_folder'].'/body.php');
require_once($theme_parameters['theme_folder'].'/footer.php');
ob_end_flush();
我要包含的文件:
<ul id="horizontalmenu">
<li class="parent">Home</li>
<?
$query_pages = $mysqli->query("...query...");
while($pages_array = $query_pages->fetch_assoc())
{
echo '<li class="parent"><a href="'.$pages_array['ID_PAGE'].'_'.text2url($pages_array['title']).'.html">'.$pages_array['title'].'</a>';
list_pages_home_child($id_parent);
echo '</li>';
}
?>
<li class="parent">Contact</li>
</ul>
因此,包含返回 1。关于如何返回包含的文件内容而不仅仅是“1”的任何线索?
在我要包含的 php 文件中,有 $var 和函数,所以 file_get_contents() 是不够的。我得到Fatal error: Unknown: Cannot use output buffering in output buffering display handlers in Unknown on line 0
【问题讨论】:
-
如何不只得到 1...根据常识,没有人想要包含“1”
-
阅读documentation for
include():Successful includes, unless overridden by the included file, return 1.。 -
我已经检查过了,问题是我不知道如何覆盖...?
-
@Dorian_gd:问题是你在这里使用了错误的函数。
include()包括 AND 评估指定的文件。你只需要在这里file_get_contents()。 -
在 $name_array.php 我有 php,file_get_contents() 只返回 html
标签: php arrays include str-replace