1

因此,假设您有一个 php post 脚本,它将您传递给它的任何内容作为新行附加到文本文件中


假设该文件名为 file.txt,如下所示:

11:45 Am
12:49 PM
Went to Lunch
3:25 PM

我想知道,我怎样才能编写一个将信息视为 3 对的 php 脚本。所以在 for 循环中它会显示

line1 | line2 | line3
line4

请注意,第 4 行之后没有任何内容,因此它停止了。

4

3 回答 3

5

您可以使用(演示

$chunksOfThree = array_chunk(file('/path/to/file', FILE_IGNORE_NEW_LINES), 3);
foreach ($chunksOfThree as $chunk) {
    echo implode(' | ', $chunk), PHP_EOL;
}

这将输出所需的

11:45 Am | 12:49 PM | Went to Lunch
3:25 PM

请参阅手册条目

于 2012-06-17T07:16:34.403 回答
1

fgets从文件中读取整行。它比fread 之类的要慢,但可以满足您的需求。

您还可以使用file函数将整个文件读入一个数组。数组中的每个元素对应于文件中的一行。

如果读取的行数不是 3 的倍数,则忽略最后 1 或 2 行。

fgets如果没有更多数据,则返回 false,因此您可以检查以确定三元组条目之一是否不完整。

while(!feof($fp)) {
    $line1 = fgets($fp);
    $line2 = fgets($fp);
    $line3 = fgets($fp);

    if ($line2 === false) {
        echo "$line1";
    } else if ($line3 == false) {
        echo "$line1 | $line2";
    } else {
        echo "$line1 | $line2 | $line3\n";
    }
于 2012-06-17T07:15:40.223 回答
0

您可以为此使用此代码

<?php
$filename = "test.txt";
$fp = fopen( $filename, "r" ) or die("Couldn't open $filename");
$i=0;
while ( ! feof( $fp ) ) {
   $line = fgets( $fp, 1024 );
   if($i==2)
   {
      print "$line";
      $i=0;
      print "<br>";
   }
   else
   {
      print "$line | ";
      $i++;
   }
}
?>

Output : 

11:45 Am | 12:49 PM | Went to Lunch 
3:25 PM | 
于 2012-06-17T07:13:38.007 回答