web-dev-qa-db-fra.com

Lire chaque ligne de fichier txt dans un nouvel élément de tableau

J'essaie de lire chaque ligne d'un fichier texte dans un tableau et d'avoir chaque ligne dans un nouvel élément.
Mon code jusqu'ici.

<?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

Si vous n'avez besoin d'aucun traitement spécial, ceci devrait faire ce que vous cherchez

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

Le moyen le plus rapide que j'ai trouvé est: 

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

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

où $ nomfichier sera le chemin et le nom de votre fichier, par exemple. ../nom_fichier.txt.

En fonction de la configuration de votre fichier texte, vous devrez peut-être jouer avec le bit\n.

33
Drew Dello Stritto

Il suffit d'utiliser ceci:

$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 éviter d’ajouter une nouvelle ligne à la fin de chaque élément du tableau 
Vous pouvez également utiliser FILE_SKIP_EMPTY_LINES pour ignorer les lignes vides

référence ici

17
iianfumenchu

C'est aussi simple que ça:

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

file_get_contents() - récupère le fichier entier sous forme de chaîne.

explode("\n") - divisera la chaîne avec le délimiteur "\n" - ce qui est un échappement ASCII-LF pour une nouvelle ligne.

Mais faites attention - vérifiez que le fichier aUNIX- fins de lignes. 

si "\n" ne fonctionnera pas correctement, vous avez un autre code de nouvelle ligne2 et vous pouvez essayer "\r\n", "\r" ou "\025"

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

De toute évidence, vous devrez d'abord créer un descripteur de fichier et le stocker dans $file.

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);

Ce sera accepter le fichier txt en tant que tableau. Donc écrivez n'importe quoi dans le fichier links.txt (utilisez une ligne pour un élément) après, lancez cette page :) votre tableau sera $ file

1
altayevrim

Vous étiez sur la bonne voie, mais le code que vous avez publié posait quelques problèmes. Tout d'abord, il n'y avait pas de crochet de fermeture pour la boucle while. Deuxièmement, $ line_of_text serait écrasé à chaque itération de boucle, ce qui est corrigé en changeant le = en a. = Dans la boucle. Troisièmement, vous faites exploser les caractères littéraux '\ n' et non une nouvelle ligne; en PHP, les guillemets simples désignent des caractères littéraux, mais les guillemets doubles interprètent en fait les caractères et variables échappés.

    <?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

Ceci a été assez bien couvert ici, mais si vousAVEZ VRAIMENTbesoin de performances encore meilleures que celles énumérées ici, vous pouvez utiliser cette approche qui utilise strtok.

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

Notez que cela suppose que votre fichier est enregistré avec \n comme caractère de nouvelle ligne (vous pouvez le mettre à jour si besoin est) et qu'il stocke également les mots/noms/lignes sous forme de clés de tableau plutôt que de valeurs, de sorte que vous puissiez les utiliser comme une table de correspondance, permettant d'utiliser isset (beaucoup, beaucoup plus rapidement), au lieu de in_array.

0
Brian Leishman