php逐行读取txt文件写入数组的方法
php逐行读取txt文件写入数组的方法
测试数据:
test01
test02
test03
test04
test05
test06
test07
test08
test09
test10
test11
test12
方法01
$fileUrl = "E:\web\log.txt"; $isss=file_exists($fileUrl) or exit("There is no file"); $file = fopen($fileUrl, "r") ; $user=array(); $i=0; //输出文本中所有的行,直到文件结束为止。 while(! feof($file)) { $user[$i]= fgets($file);//fgets()函数从文件指针中读取一行 $i++; } fclose($file); $user=array_filter($user); print_r($user);
方法02 使用 yield
header('content-type:text/html;charset=utf-8'); // $fd = fopen("./fei.txt",'a'); // for ($i = 0; $i < 10; $i++) { // // file_put_contents('fei.txt', "this is $i "."line".PHP_EOL, FILE_APPEND); // fwrite($fd, "this is $i " . "line" . PHP_EOL); // } // fclose($fd); function readText() { $handle = fopen("./fei.txt", 'rb'); while (feof($handle) === false) { yield fgets($handle); //注意这里使用生成器语法,可以读取大文件 } fclose($handle); } $readTextCon1 = readText(); foreach ($readTextCon1 as $key => $value) { echo $value . '<br />'; }
其他:
很多时候记录日志需要换行。不建议使用\r\n,因为: 在windows中\r\n是换行 在Mac中\r是换行 在Liunx中\n是换行 但是PHP提供了一个常量来匹配不同的操作系统,即: PHP_EOL
file_put_contents("log.txt", "hello world log.".PHP_EOL, FILE_APPEND);
扩展:
packagist 一个仓库