从文件中读取第一行的最快方法
什么是仅从文件中读取第一行的最快,最简单的方法? 我知道你可以使用file
,但在我的情况下,浪费加载整个文件的时间是没有意义的。
最好是单线。
那么,你可以这样做:
$f = fopen($file, 'r'); $line = fgets($f); fclose($f);
这不是一条线,但如果你把它作为一条线,你可能会被错误检查,或将资源打开比你需要更长的时间,所以我会说保持多行
编辑
如果你绝对知道文件存在,你可以使用一行:
$line = fgets(fopen($file, 'r'));
原因是PHP为资源实现了RAII 。
这意味着,当文件句柄超出范围(在这种情况下调用fgets后立即发生),它将被closures。
$firstline=`head -n1 filename.txt`;
我印象深刻没有人提到file()函数:
$line = file($filename)[0];
或者version_compare(PHP_VERSION,“5.4.0”)<0:
$line = array_shift(file($filename));
$line = ''; $file = 'data.txt'; if($f = fopen($file, 'r')){ $line = fgets($f); // read until first newline fclose($f); } echo $line;
你可以尝试我们fread并宣布文件大小阅读。
如果你不介意在整个文件中阅读,那么一行就是:
$first_line = array_shift(array_values(preg_split('/\r\n|\r|\n/', file_get_contents($file_path), 2)));
🙂
在我的一个项目(qSandbox)中,我使用这种方法来获取我读取的文本文件的第一行。 我有我的电子邮件模板是在一个文本文件和主题是在第一行。
$subj_regex = '#^\s*(.+)[\r\n]\s*#i'; // subject is the first line of the text file. Smart, eh? if (preg_match($subj_regex, $buff, $matches)) { $subject = $matches[1]; $buff = preg_replace($subj_regex, '', $buff); // rm subject from buff now. }
尝试这个:
$file = 'data.txt'; $data = file_get_contents($file); $lines = explode