Какой самый быстрый и простой способ прочитать первую строку только из файла? Я знаю, что вы можете использовать file
, но в моем случае нет смысла тратить время на загрузку всего файла.
Предпочтительно однострочный.
Какой самый быстрый и простой способ прочитать первую строку только из файла? Я знаю, что вы можете использовать file
, но в моем случае нет смысла тратить время на загрузку всего файла.
Предпочтительно однострочный.
Ну, вы могли бы сделать:
$f = fopen($file, 'r');
$line = fgets($f);
fclose($f);
Это не одна строка, но если вы сделали ее одной строкой, вы либо были бы завинчены для проверки ошибок, либо оставите ресурсы открытыми дольше, чем они вам нужны, поэтому я бы сказал, что держать несколько строк
Если вы АБСОЛЮТНО знаете, что файл существует, вы можете использовать однострочный:
$line = fgets(fopen($file, 'r'));
Причина в том, что PHP реализует RAII для ресурсов.
Это означает, что когда дескриптор файла выходит из области видимости (что происходит сразу после вызова fgets в этом случае), он будет закрыт.
$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