2011-10-04 48 views
0

我使用下面的函數打開一個文件的開頭:導入的文件被添加到頁面

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

回答

1

您閱讀您的文件時使用echo,所以它直接打印出來。

您可以使用輸出緩衝:ob_start

或者乾脆獲取文件的內容,並用它來代替,或者你函數調用:file_get_contents

1

你應該到是讓實例方法返回一個值作爲結果而不是在您要求的位置回顯。像這樣:

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"; 
1

我想這是因爲你的迴音句子,被髮送到瀏覽器的第一件事就是回聲一句輸出,所以它首先表明無論你在哪裏把它。

應該返回不呼應,這樣的事情:

function example() { 
    $output = ''; 
    $foo = fopen('file.txt', 'r'); 
    while (!feof($foo)) { 
    $foo2 = fgets($foo); 
    $output .= $foo2; 
    } 
    return $output; 
}