Was ist der schnellste und einfachste Weg, die erste Zeile nur aus einer Datei zu lesen? Ich weiß, dass Sie file
verwenden können, aber in meinem Fall ist es sinnlos, die Zeit zu verlieren, die gesamte Datei zu laden.
Vorzugsweise eine Einlage.
Nun, du könntest tun:
$f = fopen($file, 'r');
$line = fgets($f);
fclose($f);
Es ist keine einzige Zeile, aber wenn Sie eine Zeile erstellt haben, werden Sie entweder zur Fehlerprüfung geschraubt oder lassen Ressourcen länger offen, als Sie sie benötigen. Daher würde ich sagen, dass Sie die mehreren Zeilen beibehalten
Wenn Sie ABSOLUT wissen, dass die Datei existiert, können Sie einen Einzeiler verwenden:
$line = fgets(fopen($file, 'r'));
Der Grund ist, dass PHP RAII für Ressourcen implementiert.
Das heißt, wenn das Dateihandle den Gültigkeitsbereich verlässt (was in diesem Fall unmittelbar nach dem Aufruf von fgets geschieht), wird es geschlossen.
$firstline=`head -n1 filename.txt`;
$line = '';
$file = 'data.txt';
if($f = fopen($file, 'r')){
$line = fgets($f); // read until first newline
fclose($f);
}
echo $line;
Ich bin beeindruckt, dass niemand die file () - Funktion erwähnt hat:
$line = file($filename)[0];
oder wenn version_compare (PHP_VERSION, "5.4.0") <0:
$line = array_shift(file($filename));
if(file_exists($file)) {
$line = fgets(fopen($file, 'r'));
}
Sie könnten versuchen, uns fread zuzuweisen und die Dateigröße zum Lesen zu erklären.
In einem meiner Projekte (qSandbox) verwende ich diesen Ansatz, um die erste Zeile einer Textdatei abzurufen, die ich sowieso gelesen habe .. Ich habe meine E-Mail-Vorlagen in einer Textdatei und der Betreff steht in der ersten Zeile.
$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.
}