Lire chaque ligne du fichier txt à nouveau l'élément de tableau
Je suis en train de lire chaque ligne d'un fichier texte dans un tableau et demandez à chaque ligne dans un élément nouveau.
Mon code jusqu'à présent.
<?php
$file = fopen("members.txt", "r");
$i = 0;
while (!feof($file)) {
$line_of_text = fgets($file);
$members = explode('\n', $line_of_text);
fclose($file);
?>
- Est tout ce qui est stocké dans le tableau avec votre code comme il est? Quel problème rencontrez-vous?
- Avertissement: FAUX fopen va émettre un avertissement et le résultat dans une boucle infinie ici. php.net/manual/en/function.feof.php
- Malgré le thread date de
'\n\'
ne sera pas explosé alors qu'il doit être un"\n"
de l'avoir analysée comme une séquence d'échappement.
Vous devez vous connecter pour publier un commentaire.
Si vous n'avez pas besoin de tout traitement spécial, cette devriez faire ce que vous êtes à la recherche pour
Le moyen le plus rapide que j'ai trouvé est:
où $filename va être le chemin & nom de votre fichier, par exemple. ../filename.txt.
Selon la façon dont vous avez configuré votre fichier texte, vous aurez peut avoir à jouer avec les \n bits.
Utiliser seulement ceci:
FILE_IGNORE_NEW_LINES
éviter d'ajouter un saut de ligne à la fin de chaque élément de tableauVous pouvez également utiliser
FILE_SKIP_EMPTY_LINES
pour Ignorer les lignes videsréférence ici
Évidemment, vous aurez besoin de créer un descripteur de fichier de la première et de la stocker dans
$file
.C'est juste aussi simple que ça:
file_get_contents()
- a l'ensemble du fichier en tant que chaîne de caractères.explode("\n")
- partager la chaîne avec le délimiteur"\n"
- ce qui est de l'ASCII LF échapper pour un retour à la ligne.Mais attention - vérifiez que le fichier a UNIX-les fins de Ligne.
si
"\n"
ne fonctionnera pas correctement, vous avez un autre codage of2 retour à la ligne et vous pouvez essayer"\r\n"
,"\r"
ou"\025"
Vous étiez sur la bonne voie, mais il y avait quelques problèmes avec le code que vous avez posté. Tout d'abord, il n'y a pas de crochet de fermeture de la boucle while. Deuxièmement, $line_of_text serait écrasé à chaque itération de boucle, qui est fixé par la modification de la = à un .= dans la boucle. Troisièmement, vous êtes exploser les caractères '\n' et pas un saut de ligne; en PHP, les guillemets simples noterons caractères littéraux, mais guillemets doubles en fait interpréter des caractères d'échappement et de variables.
Ce sera accepter le fichier txt sous forme de tableau. Donc écrire quoi que ce soit à l'links.txt fichier (utilisez une ligne pour un élément) après, exécutez cette page 🙂 votre tableau sera $fichier
Cela a été couvert ici assez bien, mais si vous VRAIMENT besoin de bien meilleures performances que rien dans la liste, vous pouvez utiliser cette approche qui utilise
strtok
.Remarque, cela suppose que votre fichier est enregistré avec
\n
que le caractère de saut de ligne (vous pouvez mettre à jour qu'en tant que de besoin), et il stocke également les mots/noms/lignes de la matrice de touches au lieu de valeurs, de sorte que vous pouvez l'utiliser comme une table de recherche, permettant l'utilisation deisset
(beaucoup plus rapide), au lieu dein_array
.