wake-up-neo.net

Lesen Sie jede Zeile der TXT-Datei in ein neues Array-Element

Ich versuche, jede Zeile einer Textdatei in ein Array zu lesen 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);

?>
93
Dan

Wenn Sie keine spezielle Verarbeitung benötigen, sollte this das tun, wonach Sie suchen

$lines = file($filename, FILE_IGNORE_NEW_LINES);
371
Yanick Rochon

Der schnellste Weg, den ich gefunden habe, ist: 

// Open the file
$fp = @fopen($filename, 'r'); 

// Add each line to an array
if ($fp) {
   $array = explode("\n", fread($fp, filesize($filename)));
}

dabei wird $ Dateiname der Pfad und 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.

33

Verwenden Sie einfach dieses:

$array = explode("\n", file_get_contents('file.txt'));
24
RoLife
<?php
$file = fopen("members.txt", "r");
$members = array();

while (!feof($file)) {
   $members[] = fgets($file);
}

fclose($file);

var_dump($members);
?>
21
Gaurav
$yourArray = file("pathToFile.txt", FILE_IGNORE_NEW_LINES);

FILE_IGNORE_NEW_LINES vermeidet das Hinzufügen von Zeilenumbrüchen am Ende jedes Array-Elements 
Sie können auch FILE_SKIP_EMPTY_LINES verwenden, um leere Zeilen zu überspringen

referenz hier

17
iianfumenchu

Es ist einfach so:

$lines = explode("\n", file_get_contents('foo.txt'));

file_get_contents() - ruft die gesamte Datei als String auf.

explode("\n") - teilt den String mit dem Trennzeichen "\n" auf - was ist der ASCII-LF-Escape-Code für einen Zeilenumbruch.

Aber achten Sie darauf, dass die DateiUNIX- Zeilenenden hat. 

wenn "\n" nicht richtig funktioniert, haben Sie eine andere Kodierung von2 Newline und Sie können "\r\n", "\r" oder "\025" versuchen

7
CodeBrauer
$lines = array();
while (($line = fgets($file)) !== false)
    array_Push($lines, $line);

Natürlich müssen Sie zuerst einen Datei-Handle erstellen und in $file speichern.

6
Rafe Kettler
$file = __DIR__."/file1.txt";
$f = fopen($file, "r");
$array1 = array();

while ( $line = fgets($f, 1000) )
{
    $nl = mb_strtolower($line,'UTF-8');
    $array1[] = $nl;
}

print_r($array);
2
Attila Nagy
    $file = file("links.txt");
print_r($file);

Dies wird die TXT-Datei als Array akzeptieren. Schreiben Sie also alles in die links.txt-Datei (verwenden Sie eine Zeile für ein Element) und führen Sie diese Seite aus

1
altayevrim

Sie waren auf dem richtigen Weg, aber es gab einige Probleme mit dem von Ihnen geposteten Code. Zunächst 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, Sie explodieren die wörtlichen Zeichen '\ n' und keine eigentliche Zeile. In PHP bezeichnen einfache Anführungszeichen Literalzeichen, doppelte Anführungszeichen interpretieren jedoch Escape-Zeichen und -Variablen.

    <?php
        $file = fopen("members.txt", "r");
        $i = 0;
        while (!feof($file)) {
            $line_of_text .= fgets($file);
        }
        $members = explode("\n", $line_of_text);
        fclose($file);
        print_r($members);
    ?>
0
Nick Andren

Dies wurde hier ziemlich gut behandelt, aber wenn Sie wirklich _ eine noch bessere Leistung benötigen als alles, was hier aufgelistet ist, können Sie diesen Ansatz verwenden, der strtok verwendet.

$Names_Keys = [];
$Name = strtok(file_get_contents($file), "\n");
while ($Name !== false) {
    $Names_Keys[$Name] = 0;
    $Name = strtok("\n");
}

Beachten Sie, dies setzt voraus, dass Ihre Datei mit \n als Zeilenvorschubzeichen gespeichert ist (Sie können das bei Bedarf aktualisieren) und speichert auch die Wörter/Namen/Zeilen als Arrayschlüssel anstelle der Werte, sodass Sie sie als verwenden können eine Nachschlagetabelle, die die Verwendung von isset (viel, viel schneller) anstelle von in_array ermöglicht.

0
Brian Leishman