【发布时间】:2010-11-30 13:26:11
【问题描述】:
echo ("<div style=\"text-align:center\">" . include ('file.php') . "</div>\n");
我不知道为什么,但是每当我把那行放在我的脚本中时,我都会得到空白屏幕:(
【问题讨论】:
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
不确定include 指令的() 是否符合您的预期...
实际上,include manual page 上的 example #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的内容会出现在echo的内容之前。所以include 的内容没有被 DIV 包裹。
我不知道你是否可以做这样的事情。 首先执行包含,然后对包含文件中的任何给定变量执行回显。
【讨论】:
我认为你需要这样做:
ob_start();
include('file.php');
$contents = ob_get_clean();
echo ("<div style=\"text-align:center\">" . $contents . "</div>\n");
“include”指令不返回任何内容,因此尝试将其附加到字符串是行不通的。
【讨论】:
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 () or die() not working
【讨论】:
echo "<div style=\"text-align:center\">"; include 'file.php'; echo "</div>\n";
要输出 file.php 的内容,您可能需要使用 http://us3.php.net/file_get_contents
【讨论】:
file.php 有什么东西吗?它可能是空的,或者其中的某些内容可能会导致错误。
【讨论】:
查看浏览器中的源代码,而不仅仅是可见部分。通常您可以通过按 Ctrl+U 来执行此操作。如果它只是输出一个空的div 元素,您会在浏览器中看到一个空白屏幕。请记住,.php 文件很可能在输出之前在您的设置中解析,这意味着您永远不会看到 <?php ?> 标记和它们之间的代码。
【讨论】:
我从没想过 include 是一个返回字符串你可以打印的函数。
Reference Manual 表明,如果有的话,它会返回一个布尔值。
【讨论】:
file.php 末尾是否有额外的换行符?
【讨论】: