在 PHP 中,如何判断文件资源当前处于“on”哪一行?
题
使用 PHP,可以使用以下命令读取文件的内容 fopen
和 fgets
. 。每一次 fgets
被调用时,它返回文件中的下一行。
如何 fgets
知道 读什么行?换句话说,它如何知道它上次读取的是第 5 行,所以这次应该返回第 6 行的内容?有没有办法让我访问该行号数据?
(我知道可以通过将文件的全部内容读入数组来执行类似的操作 file
, ,但我想通过以下方式完成此任务 fopen
.)
其他提示
文件只是数据流,从一开始到结束读出。操作系统会记住在该文件中,到目前为止您已经阅读的位置。如果需要,可在应用程序这样做也相当简单。该操作系统只关心字节位置虽然不是线。
试想处理按序52卡的甲板。你手头宽裕的第一张牌。下一次的2卡。当你想给了3卡,你并不需要开始从一开始重新计数,甚至回忆你在哪里,你刚刚到手了下一个可用的网卡,这将是第三次。
这可能是对阅读行需要更多的工作,因为你希望缓存从性能与着想的实际文件中读取数据,但它不是给它远不止记录的最后一块的偏移你递出的数据,查找下一个新行字符和挂断所有这些2个点之间的数据。
PHP也不是操作系统有没有真正的需要,以保持行号左右,因为所有的系统在乎的是“下一行”。如果你想知道的行号,你保留一个计数器,每您的应用程序读取一行时加一。
$lineno=0;
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
lineno++; // keep track of the line number
...
}
我甲肝这个老样本滚刀我它可以帮助你:)
$File = file('path');
$array = array();
$linenr = 5;
foreach( $File AS $line_num => $line )
{
$array = array_push( $array , $line );
}
echo $array[($linenr-1)];
您可以只调用fgets
并在每次调用时增加一个变种$line_number
。这会告诉你,行是打开的。
不隶属于 StackOverflow