2012-03-25 51 views
5

Al comenzar el proceso de escribir mi sitio en PHP y MySQL, uno de los primeros scripts PHP que he escrito es un script para inicializar mi base de datos. Suelta/crea la base de datos. Suelta/crea cada una de las tablas. A continuación, cargue las tablas de literales en el script.¿Puedo leer un archivo .TXT con PHP?

¡Todo funciona bien! Whoohoo :-)

Pero preferiría leer los datos de los archivos en lugar de codificarlos en el script PHP.

Tengo un par de libros sobre PHP, pero todos están orientados al desarrollo web utilizando MySQL. No puedo encontrar nada sobre leer y escribir en archivos comunes.

Sí, sé que hay un montón de preguntas aquí en stackoverflow sobre la lectura de archivos TXT, pero cuando las miro, son para C o C# o VB o Perl. Estoy empezando a pensar que PHP simplemente no puede leer archivos :-(

Todo lo que necesito es un breve ejemplo de PHP sobre cómo abrir un archivo TXT en el servidor, leerlo secuencialmente, mostrar los datos en la pantalla y cerrar el archivo, como en este pseudo-código:

program readfile; 
handle = open('myfile.txt'); 
data = read (handle); 
while (not eof (handle)) begin 
    display data; 
    data = read (handle); 
    end; 
close (handle); 
end;  

que también tendrá que escribir archivos en el servidor cuando llegue a la parte de mi sitio web donde la gente subir avatares, y guardarlas como JPG o Los archivos GIF. Pero eso es para más adelante.

Gracias!

+0

Si ejecuta su script de inicialización solo una vez, sus datos deberían estar en la base de datos y ya no habría necesidad de leerlos, ¿no? También me doy cuenta de que acabas de comenzar a codificar en PHP, debes considerar agregar este gran recurso como favorito: http://php.net/manual/ – Eric

+2

"Sí, sé que hay un montón de preguntas aquí en stackoverflow sobre la lectura de archivos TXT, pero cuando Miro cada uno, son para C o C# o VB o Perl. Estoy empezando a pensar que PHP simplemente no puede leer archivos :-("Si no se formula una pregunta en StackOverflow, también podría ser una indicación de que es bastante trivial y que se encuentra en una ubicación obvia, por ejemplo, el manual del lenguaje de programación. :-) – Eric

+0

Pero no quiero incrustar datos en mi script. Quiero mis datos en un archivo de texto ... Y, por favor, ¡POR FAVOR, lea mi pregunta por completo antes de darme una respuesta estúpida! Tengo varios libros sobre PHP y ninguno de ellos menciona el manejo de archivos. Todos hablan sobre el uso de PHP para el desarrollo web y no mencionan el manejo de archivos. – Fredashay

Respuesta

3

Bueno, ya que estás preguntar Acerca de los recursos sobre el tema, hay un libro completo en el PHP.net docs.

Un ejemplo básico:

<?php 
// get contents of a file into a string 
$filename = "/usr/local/something.txt"; 
$handle = fopen($filename, "r"); 
$contents = fread($handle, filesize($filename)); 
fclose($handle); 
?> 
+0

Gracias! Eso está cerca de lo que necesito. Pero preferiría leer cada línea del archivo con una lectura separada para poder analizar cada línea por separado con substr. Tener el archivo completo en una gran cadena larga será un dolor para analizar. – Fredashay

22

Desde el PHP manual for fread():

<?php 
// get contents of a file into a string 
$filename = "/usr/local/something.txt"; 
$handle = fopen($filename, "r"); 
$contents = fread($handle, filesize($filename)); 
fclose($handle); 
?> 

EDITAR por el comentario, se puede leer un archivo línea por línea con fgets()

<?php 
$handle = @fopen("/tmp/inputfile.txt", "r"); 
if ($handle) { 
    while (($buffer = fgets($handle, 4096)) !== false) { 
     echo $buffer; 
    } 
    if (!feof($handle)) { 
     echo "Error: unexpected fgets() fail\n"; 
    } 
    fclose($handle); 
} 
?> 
+0

Gracias! Eso está cerca de lo que necesito. Pero preferiría leer cada línea del archivo con una lectura separada para poder analizar cada línea por separado con substr. Tener el archivo completo en una gran cadena larga será un dolor para analizar. – Fredashay

+0

@Fredashay puedes hacer eso con 'fgets', he actualizado mi respuesta – JKirchartz

+0

¡Sí! Eso es exactamente lo que quiero :-) ¡Gracias de nuevo! Desearía darte una buena racha, pero solo soy un peón aquí :-( – Fredashay

2

¿Por qué usted no lee la documentación sobre php fopen

$file = fopen("source/file.txt","r"); 
    if(!file) 
    { 
     echo("ERROR:cant open file"); 
    } 
    else 
    { 
     $buff = fread ($file,filesize("source/file.txt")); 
     print $buff; 
    } 
+0

¿Por qué no lees mi pregunta? – Fredashay

+1

php puede leer archivos, todo lo que necesitas hacer es usar 'fopen()' y ' fread() ', que está ampliamente documentado en php.net – Harry

0

¿Quieres leer línea por línea? Use fgets.

$handle = @fopen("myfile.txt", "r"); 
if ($handle) { 
    while (($content = fgets($handle, 4096)) !== false) { 
     //echo $content; 
    } 
    if (!feof($handle)) { 
     echo "Error: unexpected fgets() fail\n"; 
    } 
    fclose($handle); 
} 
4

Todo lo que necesito es un breve ejemplo de PHP de cómo abrir un archivo TXT en el servidor, leer secuencialmente, mostrar los datos en la pantalla, y cierre el archivo, como en este pseudo-código :

echo file_get_contents('/path/to/file.txt'); 

Sí ese breve, ver file_get_contents, que normalmente no es necesario un bucle:

$file = new SPLFileObject('/path/to/file.txt'); 
foreach($file as $line) { 
    echo $line; 
} 
1

php-file read es un tutorial sencillo sobre la lectura desde un archivo de texto. Es un tutorial muy básico pero también cubre diferentes aspectos de la lectura de archivos.