PHP:从文件中读取特定行
我正在尝试使用php从文本文件中读取特定行。下面是文本文件:
foo
foo2
如何使用php获取第二行的内容?这将返回第一行:
<?php
$myFile = "4-24-11.txt";
$fh = fopen($myFile, 'r');
$theData = fgets($fh);
fclose($fh);
echo $theData;
?>
..但我需要第二个。
任何帮助将不胜感激
我正在尝试使用php从文本文件中读取特定行。下面是文本文件:
foo
foo2
如何使用php获取第二行的内容?这将返回第一行:
<?php
$myFile = "4-24-11.txt";
$fh = fopen($myFile, 'r');
$theData = fgets($fh);
fclose($fh);
echo $theData;
?>
..但我需要第二个。
任何帮助将不胜感激
$myFile = "4-24-11.txt";
$lines = file($myFile);//file in to an array
echo $lines[1]; //line 2
omg我缺少7个代表来发表评论。这是@Raptor和@Tomm的评论,因为这个问题在谷歌serps中仍然很高。
他完全正确。对于小文件是完全可以的。对于大文件,它完全过度杀戮b / c php数组像疯了一样吃内存。file($file);
我刚刚用一个文件大小约为67mb(1,000,000行)的*.csv运行了一个小测试:
$t = -microtime(1);
$file = '../data/1000k.csv';
$lines = file($file);
echo $lines[999999]
."\n".(memory_get_peak_usage(1)/1024/1024)
."\n".($t+microtime(1));
//227.5
//0.22701287269592
//Process finished with exit code 0
由于还没有人提到它,我尝试了一下,实际上我最近才为自己发现。SplFileObject
$t = -microtime(1);
$file = '../data/1000k.csv';
$spl = new SplFileObject($file);
$spl->seek(999999);
echo $spl->current()
."\n".(memory_get_peak_usage(1)/1024/1024)
."\n".($t+microtime(1));
//0.5
//0.11500692367554
//Process finished with exit code 0
这在我的Win7桌面上,所以它不代表生产环境,但仍然...相当不同。