导入的文件被添加到页面的开头

时间:2011-10-04 09:03:33

标签: php

我正在使用以下功能打开文件:

    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

3 个答案:

答案 0 :(得分:1)

您在阅读文件时使用echo,因此会直接打印出来。

您可以使用输出缓冲:ob_start

或者只是获取文件内容并使用它,或者您调用函数:file_get_contents

答案 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;
}