Estoy tratando de leer cada línea de un archivo de texto en una matriz y tener cada línea en un nuevo elemento.
Mi código hasta ahora.
<?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
fuente
fuente
'\n\'
no se explotará, aunque debe ser un"\n"
para analizarlo como una secuencia de escape.Respuestas:
Si no necesita ningún procesamiento especial, esto debería hacer lo que está buscando
fuente
file()
parece ser considerablemente más lento que la matrizfile_get_contents
+explode
La forma más rápida que he encontrado es:
donde $ filename será la ruta y el nombre de su archivo, por ejemplo. ../nombredearchivo.txt.
Dependiendo de cómo haya configurado su archivo de texto, es posible que tenga que jugar con el bit \ n.
fuente
Solo usa esto:
fuente
FILE_IGNORE_NEW_LINES
Evite agregar una nueva línea al final de cada elemento de la matriz.También puede usar
FILE_SKIP_EMPTY_LINES
para omitir líneas vacíasreferencia aquí
fuente
fuente
Obviamente, primero deberá crear un identificador de archivo y almacenarlo
$file
.fuente
Es tan fácil como eso:
file_get_contents()
: obtiene el archivo completo como cadena.explode("\n")
- dividirá la cadena con el delimitador"\n"
- cuál es el escape ASCII-LF para una nueva línea.Pero preste atención: compruebe que el archivo tenga UNIX terminaciones -Line.
si
"\n"
no funciona correctamente, tiene otra codificación de 2 líneas nuevas y puede intentarlo"\r\n"
,"\r"
o"\025"
fuente
fuente
Estabas en el camino correcto, pero hubo algunos problemas con el código que publicaste. En primer lugar, no había corchetes de cierre para el bucle while. En segundo lugar, $ line_of_text se sobrescribirá con cada iteración del bucle, que se arregla cambiando el = por a. = En el bucle. En tercer lugar, está explotando los caracteres literales '\ n' y no una nueva línea real; en PHP, las comillas simples denotarán caracteres literales, pero las comillas dobles realmente interpretarán caracteres de escape y variables.
fuente
Esto aceptará el archivo txt como matriz. Entonces, escriba cualquier cosa en el archivo links.txt (use una línea para un elemento) después, ejecute esta página :) su matriz será $ file
fuente
Esto se ha cubierto aquí bastante bien, pero si REALMENTE necesita un rendimiento aún mejor que cualquiera de los enumerados aquí, puede usar este enfoque que usa
strtok
.Tenga en cuenta que esto supone que su archivo se guarda con
\n
el carácter de nueva línea (puede actualizarlo según sea necesario), y también almacena las palabras / nombres / líneas como claves de matriz en lugar de los valores, para que pueda usarlo como un tabla de búsqueda, lo que permite el uso deisset
(mucho, mucho más rápido), en lugar dein_array
.fuente