Самый быстрый способ чтения первой строки из файла

Какой самый быстрый и простой способ прочитать первую строку только из файла? Я знаю, что вы можете использовать file, но в моем случае нет смысла тратить время на загрузку всего файла.

Предпочтительно однострочный.

Ответ 1

Ну, вы могли бы сделать:

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

Это не одна строка, но если вы сделали ее одной строкой, вы либо были бы завинчены для проверки ошибок, либо оставите ресурсы открытыми дольше, чем они вам нужны, поэтому я бы сказал, что держать несколько строк

Изменить

Если вы АБСОЛЮТНО знаете, что файл существует, вы можете использовать однострочный:

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

Причина в том, что PHP реализует RAII для ресурсов.

Это означает, что когда дескриптор файла выходит из области видимости (что происходит сразу после вызова fgets в этом случае), он будет закрыт.

Ответ 2

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

Ответ 3

Я впечатлен тем, что никто не упоминал функцию file():

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

или если version_compare (PHP_VERSION, "5.4.0" ) < 0:

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

Ответ 4

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

Ответ 5

Вы можете попробовать fread и объявить размер файла для чтения.

Ответ 6

Если вы не пропустите чтение во всем файле, то однострочный:

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

:)

Ответ 7

В одном из моих проектов (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.
}

Ответ 8

Попробуйте следующее:

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