echo ("<div style=\"text-align:center\">" . include ('file.php') . "</div>\n");
我不知道为什么,但是每当我把那行放在我的脚本中时,我都会得到空白屏幕:(
echo "<div style=\"text-align:center\">";
include ('file.php');
echo "</div>\n";
Include 不返回文件解析的结果,因此在此处进行连接毫无意义。
运行这段代码时:
echo ("<div style=\"text-align:center\">" . include ('temp-2.php') . "</div>\n");
(我从您的示例中复制粘贴,仅更改文件名)
我收到这个警告:
Warning: include(temp-2.php</div> ) [function.include]: failed to open stream: No such file or directory
不确定()
forinclude
指令是否符合您的预期...
实际上,包含手册页上的示例 #4看起来可以解释这一点:
<?php
// won't work, evaluated as include(('vars.php') == 'OK'), i.e. include('')
if (include('vars.php') == 'OK') {
echo 'OK';
}
// works
if ((include 'vars.php') == 'OK') {
echo 'OK';
}
?>
而且,确实,将您的代码重写为:
echo ("<div style=\"text-align:center\">" . (include 'temp-2.php') . "</div>\n");
效果更好:没有警告 - 文件实际上包含正确。
作为旁注:如果你得到一个白屏,这可能是因为你的配置“隐藏”了错误和警告——这对于开发环境来说不是很好:显示这些会让你大吃一惊。
要更改它,您可以使用 php.ini 文件中的error_reporting
和display_errors
选项。
或者,如果您无权访问该文件,您可以在脚本开头使用error_reporting
和ini_set
-- 类似这样的内容:
error_reporting(E_ALL);
ini_set('display_errors', 'On');
注意:当然,您不希望在生产环境中出现这种情况,您应该在其上记录错误(请参阅 参考资料log_errors
),而不是显示它们。
我不知道你是否可以做这样的事情。首先执行包含,然后对包含文件中的任何给定变量进行回显。
include
不是函数,而是一种特殊的语言结构。这也是您不需要在“参数”周围加上括号的原因,因为include
只有一个“参数”。将其包装在括号中就像将任何其他值包装在括号中一样:
1 === (1) === ((1)) === (((1))) === …
相反,您需要将整个构造包装在括号中:
echo "<div style=\"text-align:center\">" . (include 'file.php') . "</div>\n";
但是由于include
不返回包含的脚本文件的输出而是直接打印它,因此您需要缓冲输出并将其返回到包含该文件的脚本:
<?php // file.php
ob_start();
// …
return ob_get_clean();
那会奏效。但我不认为你想这样做。所以这可能更容易:
echo "<div style=\"text-align:center\">";
include 'file.php';
echo "</div>\n";
顺便说一句:echo
, print
,exit
和die
也是特殊的语言结构。另请参阅require_once () 或 die() 不工作
我认为你需要做这样的事情:
ob_start();
include('file.php');
$contents = ob_get_clean();
echo ("<div style=\"text-align:center\">" . $contents . "</div>\n");
“include”指令不返回任何内容,因此尝试将其附加到字符串是行不通的。
要输出 file.php 的内容,您可能需要使用http://us3.php.net/file_get_contents
里面有东西file.php
吗?它可能是空的,或者其中的某些内容可能会导致错误。
在浏览器中查看源代码,而不仅仅是可见部分。通常您可以通过按 Ctrl+U 来执行此操作。如果它只是输出一个空div
元素,您会在浏览器中看到一个空白屏幕。请记住,.php 文件最有可能在输出之前在您的设置中解析,这意味着您永远不会看到<?php ?>
标签和它们之间的代码。
我从没想过 include 是一个返回可以打印的字符串的函数。
参考手册建议,如果有的话,它会返回一个布尔值。
file.php 的末尾是否有额外的换行符?