繁体   English   中英

如何从文件中读取多行直到 PHP 中的空行?

[英]How to read multiple lines from a file until a blank line in PHP?

我正在使用一个包含多行的日志文件。 我想在我的仪表板中使用这个日志文件。 该文件采用以下格式:

line1
line2
line3

line4
line5

line6
line7
line8

我想阅读这个文件,并显示它的内容,例如:

line1 line2 line3
line4 line5
line6 line7 line8

如何在 php 中执行此操作?

注意:我可以在仪表板中读取文件并回显结果。 我只需要上面的function。

至今:

<php?>
$logs = File::get('logs.txt');
$lines=explode("\n", $logs);
echo $lines['0'];

但这仅向我显示了第一行。

方法一

假设您使用 $xline 作为临时缓冲区。

循环遍历日志文件,一次读取一行。 (比如说使用 fgets)

如果从日志中读取的行不为空,则将从日志中读取的数据连接到临时缓冲区,否则显示缓冲区,清除它并将新行读入缓冲区

所以代码是:

<?php
$xline="";

$handle = fopen("./logs.txt", "r");
if ($handle) {
     while (($line = fgets($handle)) !== false) {
       if (trim($line)!=""){
           $xline.= " " . trim($line);
        }else{
           echo $xline."<br>";
           $xline=$line;
        }
   }
}
           echo $xline."<br>";
?>

完整的工作示例:

http://www.createchhk.com/SOanswers/SOanswer11Sep2022.php

日志文件:

http://www.createchhk.com/SOanswers/logs.txt

方法二

  1. <div>块作为缓冲区开始
  2. 循环日志文件并使用</div><div>替换任何空白行(否则将读取的行复制到缓冲区)
  3. 文件读取后,output 缓冲区和一个</div>

所以代码将是

<?php

$xline="<div>";

$handle = fopen("./logs2.txt", "r");
if ($handle) {
     while (($line = fgets($handle)) !== false) {
       if (trim($line)!=""){
           $xline.=$line;
        }else{
           $xline.="</div><div>";
        }
   }
}

           echo $xline ."</div>"; 


?>

完整的工作示例:

http://www.createchhk.com/SOanswers/SOanswer11Sep2022b.php

日志文件:

http://www.createchhk.com/SOanswers/logs2.txt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM