Ich versuche, jede Zeile einer Textdatei in ein Array einzulesen und jede Zeile in einem neuen Element zu haben.
Mein Code bisher.
<?php
$file = fopen("members.txt", "r");
$i = 0;
while (!feof($file)) {
$line_of_text = fgets($file);
$members = explode('\n', $line_of_text);
fclose($file);
?>
php
arrays
text-files
fgets
Dan
quelle
quelle
'\n\'
wird ein nicht explodiert, während es ein sein muss"\n"
, damit es als Escape-Sequenz analysiert wird.Antworten:
Wenn Sie keine spezielle Verarbeitung benötigen, dies tun sollten , was Sie suchen
quelle
file()
scheint erheblich langsamer zu sein alsfile_get_contents
+explode
zu ArrayDer schnellste Weg, den ich gefunden habe, ist:
Dabei wird $ filename der Pfad und der Name Ihrer Datei sein, z. ../filename.txt.
Je nachdem, wie Sie Ihre Textdatei eingerichtet haben, müssen Sie möglicherweise mit dem \ n-Bit herumspielen.
quelle
Verwenden Sie einfach dies:
quelle
FILE_IGNORE_NEW_LINES
Vermeiden Sie das Hinzufügen von Zeilenumbrüchen am Ende jedes Array-Elements.Sie können auch
FILE_SKIP_EMPTY_LINES
leere Zeilen überspringenReferenz hier
quelle
quelle
Natürlich müssen Sie zuerst ein Dateihandle erstellen und darin speichern
$file
.quelle
So einfach ist das:
file_get_contents()
- Ruft die gesamte Datei als Zeichenfolge ab.explode("\n")
- teilt die Zeichenfolge mit dem Trennzeichen"\n"
- was ist ASCII-LF-Escape für eine neue Zeile?Aber pass auf - überprüfe, ob die Datei UNIX hat Line-Endungen hat.
Wenn dies
"\n"
nicht richtig funktioniert, haben Sie eine andere Codierung von 2 Zeilenumbruch und können versuchen"\r\n"
,"\r"
oder"\025"
quelle
quelle
Sie waren auf dem richtigen Weg, aber es gab einige Probleme mit dem von Ihnen geposteten Code. Erstens gab es keine schließende Klammer für die while-Schleife. Zweitens würde $ line_of_text bei jeder Schleifeniteration überschrieben, was durch Ändern von = in a. = In der Schleife behoben wird. Drittens explodieren Sie die wörtlichen Zeichen '\ n' und keine tatsächliche neue Zeile. In PHP bezeichnen einfache Anführungszeichen Literalzeichen, aber doppelte Anführungszeichen interpretieren tatsächlich maskierte Zeichen und Variablen.
quelle
Dies akzeptiert die txt-Datei als Array. Schreiben Sie also etwas in die Datei links.txt (verwenden Sie eine Zeile für ein Element), nachdem Sie diese Seite ausgeführt haben :) Ihr Array wird $ file sein
quelle
Dies wurde hier recht gut behandelt, aber wenn Sie WIRKLICH eine noch bessere Leistung benötigen als alles, was hier aufgeführt ist, können Sie diesen Ansatz verwenden
strtok
.Beachten Sie, dass dies voraussetzt, dass Ihre Datei mit
\n
dem Zeilenumbruchzeichen gespeichert ist (Sie können dies nach Bedarf aktualisieren), und dass die Wörter / Namen / Zeilen anstelle der Werte als Array-Schlüssel gespeichert werden, sodass Sie sie als verwenden können Nachschlagetabelle, die die Verwendung vonisset
(viel, viel schneller) anstelle von ermöglichtin_array
.quelle