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);
?>
Si vous n'avez besoin d'aucun traitement spécial, ceci devrait faire ce que vous cherchez
$lines = file($filename, FILE_IGNORE_NEW_LINES);
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.
Il suffit d'utiliser ceci:
$array = explode("\n", file_get_contents('file.txt'));
<?php
$file = fopen("members.txt", "r");
$members = array();
while (!feof($file)) {
$members[] = fgets($file);
}
fclose($file);
var_dump($members);
?>
$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
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"
$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
.
$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);
$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
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);
?>
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
.