读取txt文件但不显示最后一行

时间:2013-12-14 12:23:34

标签: php

是否可以读取除最后一行之外的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文件中的所有行,除了最后一行?

4 个答案:

答案 0 :(得分:1)

empty可能不起作用,因为它不会将换行视为空。 trim首先:

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

更好的是,要真正修复它并使用一个像样的HTML DOM解析器来读取文件。 (它似乎是HTML。)

答案 1 :(得分: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);
}

答案 2 :(得分:0)

为什么不再检查文件是否已到达?

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

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

}

这样即使它不是空的,你也会跳过最后一行

答案 3 :(得分:-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($文件)){     $ line = fgets($ file); $ line = str_replace(“Datum:”,$ line); $ line = str_replace(“'&gt;”,“
事件:”,$ line); $ line = str_replace(“'data-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(“'&gt;”,“”,$ line); echo“$ line”; }     ...