我正在使用以下功能打开文件:
function example() {
$foo = fopen('file.txt', 'r');
while (!feof($foo)) {
$foo2 = fgets($foo);
echo $foo2;
}
}
以下是代码所在的代码:
<?php
include($_SERVER['DOCUMENT_ROOT']."/class_lib.php");
$page = new Page();
function example() {
$foo = fopen('file.txt', 'r');
while (!feof($foo)) {
$foo2 = fgets($foo);
echo $foo2;
}
}
$page->meta = array
(
'title' => 'snip',
'description' => 'snip'
);
$page->content = "
snipsnipsnipsnipsnipsnip
<div id=\"foo\">
<pre>
".example()."
</pre>
</div>
<br/>snipsnip
";
$page->Display();
?>
由于某种原因,即使在pre元素中调用该函数,它也会出现在页面的开头(输出文件,然后加载html)。当我使用include()时会发生同样的事情。我必须忽略一些明显的东西......任何想法?
如果需要,可以使用class_lib.php:http://pastebin.com/7euqEWNq
答案 0 :(得分:1)
答案 1 :(得分:1)
你应该做的是让example方法返回一个值作为结果,而不是在你调用它的位置回显。像这样:
function example() {
$foo = fopen('file.txt', 'r');
while (!feof($foo)) {
$foo2 = fgets($foo);
return $foo2;
}
}
$exampleData = example();
$page->content = "snipsnipsnipsnipsnipsnip
<div id=\"foo\">
<pre>".$exampleData."</pre>
</div>
<br/>snipsnip";
答案 2 :(得分:1)
我猜这是因为你的回音句,第一个被发送到浏览器的是echo语句输出,所以无论你把它放在哪里,它都会显示出来。
你应该返回不回声,如下所示:
function example() {
$output = '';
$foo = fopen('file.txt', 'r');
while (!feof($foo)) {
$foo2 = fgets($foo);
$output .= $foo2;
}
return $output;
}