从文件中读取第一行的最快方法

什么是仅从文件中读取第一行的最快,最简单的方法? 我知道你可以使用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