1
echo ("<div style=\"text-align:center\">" . include ('file.php') . "</div>\n");

我不知道为什么,但是每当我把那行放在我的脚本中时,我都会得到空白屏幕:(

4

10 回答 10

7
echo "<div style=\"text-align:center\">";
include ('file.php');
echo "</div>\n";

Include 不返回文件解析的结果,因此在此处进行连接毫无意义。

于 2009-09-22T21:10:30.880 回答
4

运行这段代码时:

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_reportingdisplay_errors选项。

或者,如果您无权访问该文件,您可以在脚本开头使用error_reportingini_set-- 类似这样的内容:

error_reporting(E_ALL);
ini_set('display_errors', 'On');

注意:当然,您不希望在生产环境中出现这种情况,您应该在其上记录错误(请参阅 参考资料log_errors),而不是显示它们。

于 2009-09-22T21:08:06.603 回答
1

我不知道你是否可以做这样的事情。首先执行包含,然后对包含文件中的任何给定变量进行回显。

于 2009-09-22T21:05:18.377 回答
1

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,exitdie也是特殊的语言结构。另请参阅require_once () 或 die() 不工作

于 2009-09-22T21:12:23.893 回答
1

我认为你需要做这样的事情:

ob_start();
include('file.php');
$contents = ob_get_clean();

echo ("<div style=\"text-align:center\">" . $contents . "</div>\n");

“include”指令不返回任何内容,因此尝试将其附加到字符串是行不通的。

于 2009-09-22T21:12:57.963 回答
0

要输出 file.php 的内容,您可能需要使用http://us3.php.net/file_get_contents

于 2009-09-22T21:04:12.927 回答
0

里面有东西file.php吗?它可能是空的,或者其中的某些内容可能会导致错误。

于 2009-09-22T21:04:38.033 回答
0

在浏览器中查看源代码,而不仅仅是可见部分。通常您可以通过按 Ctrl+U 来执行此操作。如果它只是输出一个空div元素,您会在浏览器中看到一个空白屏幕。请记住,.php 文件最有可能在输出之前在您的设置中解析,这意味着您永远不会看到<?php ?>标签和它们之间的代码。

于 2009-09-22T21:11:32.600 回答
0

我从没想过 include 是一个返回可以打印的字符串的函数。

参考手册建议,如果有的话,它会返回一个布尔值。

于 2009-09-22T21:17:48.377 回答
-1

file.php 的末尾是否有额外的换行符?

于 2009-09-22T21:05:41.723 回答