2013-12-14 163 views
2

是否可以讀取除最後一行之外的txt文件? 最後一行是空行,並給出一個分頁「空白」頁讀取txt文件但不顯示最後一行

<!-- the input fields that will hold the variables we will use --> 
     <input type='hidden' id='current_page' /> 
    <input type='hidden' id='show_per_page' /> 


<div id='content'> 


    <?php 
$file = fopen("admin/events/events.txt", "r"); 
while(!feof($file)){ 
    $line = fgets($file); 
$line = str_replace("<div data-role='day' data-day='", "<b><u>Datum:</b></u> ", $line); 
$line = str_replace("'><div data-role='event' data-name='<h1>", " <br><b><u>Event:</b></u> ", $line); 
$line = str_replace("' data-start='", " <br><b><u>Start:</b></u> ", $line); 
$line = str_replace("' data-end='", " <br><b><u>Einde:</b></u> Tot ", $line); 
$line = str_replace("' data-location='", " <br><b><u>Locatie:</b></u> ", $line); 
$line = str_replace("</h1>", " <br><b><u>Inhoud event:</b></u><br> ", $line); 
$line = str_replace("'></div></div>", "", $line); 
echo "<div class='event'>$line</div>"; 
} 
fclose($file); 

?> 

</div> 
<br> 
<div id='page_navigation'></div> 

所以它使頁面1 2 3 4和第123頁中填充有內容,但第4頁爲空白,因爲在最後一行txt文件始終是一個換行符,因爲我使用PHP_EOL寫入了txt文件以創建新行。我如何讀取txt文件中的所有行,除了最後一行?

+0

能怎麼做,如果(空($線))繼續最後一行;或者你想閱讀其他空行,但不是最後一行? – v010dya

+0

嗨,沒有沒有其他空行,只有最後一行...我會給它一個嘗試:) thx爲你的努力 – Johan

+0

我認爲巴特的答案需要被接受,以防止他人嘗試(和失敗) –

回答

1

empty可能不起作用,因爲它不認爲換行符爲空。 trim第一:

$line = trim($line); 
if ($line != "") { 
    // process line 
} 

更好的雖然是真正修復它,並使用一個體面的HTML DOM解析器讀取文件。 (這似乎是HTML)。

+0

thx巴特爾,像一個魅力工作:) – Johan

-1

如果它是空的,就省略它!在閱讀下一行的$line = fgets($file);後,檢查它是否爲空,如果是,則只需continue。你想繼續下去,因爲如果文件中有更多的內容,並且你在它的中間,你不想退出,你想繼續下一行。如果它是最後一個空行,那麼while循環無論如何都會結束。

while(!feof($file)){ 
     $line = fgets($file); 
     if(empty($line)) { 
     continue; 
     } else { 
     $line = str_replace("<div data-role='day' data-day='", "<b><u>Datum:</b></u> ", $line); 
     // ... end rest of your code 
     } 
    } 

而(FEOF($文件)!){$ 行=與fgets($文件); $ line = str_replace(「Datum:」,$ line); $ line = str_replace(「'>」,「
Event:」,$ line); $ line = str_replace(「'data-start ='」,「
Start:」,$ line); $ line = str_replace(「'data-end ='」,「
Einde: Tot」,$ line); $ line = str_replace(「'data-location ='」,「
Locatie:」,$ line); $ line = str_replace(「」,「
Inhoud event:
」,$ line); $ line = str_replace(「'>」,「」,$ line); echo「$ line」; } ...

+0

@ user555類型來更快..糾正:)你把這個-1?如果是的話,你可以給我回它請:) :) – sobi3ch

+0

不,不是我:) – user555

+0

@ user555感謝指出我的錯誤 – sobi3ch

1

既然你說有沒有其他的空行,你絕對可以做線沿線的東西:

// open file ... 
while(!feof($file)) 
{ 
    $line = fgets($file); 
    if(empty($line)) continue; 
    // ... 
} 

這可能會給你一些奇怪的問題,如果你將有隻有數字'0'的行。 Reference所以,你可能想用它替換

if ($line === "") 

這是一個有點難以閱讀,但更精確。

如果您必須有其他空行,但不是最後一行,那麼您可以在下一個傳遞中輸出該行。所以你這樣做:

// open file ... 
$next = fgets($file) 
while(!feof($file)) 
{ 
    $line=$next; 
    // ... 
    $next = fgets($file); 
} 
+0

單詞'假'?你確定? –

+0

我錯了,對不起。 – v010dya

+0

字符串「0.0」對於empty()不是空的。 – user555

0

爲什麼你不再檢查,如果文件結束了?

while(!feof($file)){ 
$line = fgets($file); 

if (!feof($file)) 
{ 
//do what you need - it wasn't the last line 
} 

} 

這樣你就跳過,即使它不是空

相關問題