Home » Php » php – Quickest Way to Read First Line from File

php – Quickest Way to Read First Line from File

Posted by: admin April 23, 2020 Leave a comment


What’s the quickest, easiest way to read the first line only from a file? I know you can use file, but in my case there’s no point in wasting the time loading the whole file.

Preferably a one-liner.

How to&Answers:

Well, you could do:

$f = fopen($file, 'r');
$line = fgets($f);

It’s not one line, but if you made it one line you’d either be screwed for error checking, or be leaving resources open longer than you need them, so I’d say keep the multiple lines


If you ABSOLUTELY know the file exists, you can use a one-liner:

$line = fgets(fopen($file, 'r'));

The reason is that PHP implements RAII for resources.

That means that when the file handle goes out of scope (which happens immediately after the call to fgets in this case), it will be closed.


$firstline=`head -n1 filename.txt`;


$line = '';
$file = 'data.txt';
if($f = fopen($file, 'r')){
  $line = fgets($f); // read until first newline
echo $line;


I’m impressed no one mentioned the file() function:

$line = file($filename)[0];

or if version_compare(PHP_VERSION, “5.4.0”) < 0:

$line = array_shift(file($filename));


if(file_exists($file)) {
    $line = fgets(fopen($file, 'r'));


You could try to us fread and declare the file size to read.


In one of my projects (qSandbox) I uses this approach to get the first line of a text file that I read anyways.
I have my email templates are in a text files and the subject is in the first line.

$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.


fgets() returns “ ” which is a new line at the end,but using this code you will get first line without the lineBreak at the end :

$handle = @fopen($filePath, "r");
$line = reset($lines);


If you don’t mind reading in the entire file, then a one-liner would be:

$first_line = array_shift(array_values(preg_split('/\r\n|\r|\n/', file_get_contents($file_path), 2)));



Try this:

$file = 'data.txt';
$data = file_get_contents($file);
$lines = explode