所以,假设你有一个php post脚本,它将你传递给它的任何内容作为新行附加到文本文件
假设该文件名为file.txt,如下所示:
11:45 Am
12:49 PM
Went to Lunch
3:25 PM
我想知道,我怎样才能编写一个将信息视为3对的PHP脚本。 所以在for循环中它会显示
line1 | line2 | line3
line4
请注意,line4没有任何内容,因此它已停止。
答案 0 :(得分:5)
您可以使用(demo)
$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
请参阅
的手册条目答案 1 :(得分: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";
}
答案 2 :(得分: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 |