2009-11-20 36 views
42

que tienen esta secuencia de comandos en un servidor PHP-suppoting libre:¿Cómo escribir en un archivo en PHP?

<html> 
<body> 

<?php 
$file = fopen("lidn.txt","a"); 


fclose($file); 
?> 

</body> 
</html> 

sí crea el archivo lidn.txt, pero está vacío.

Quiero crear un archivo y escribir algo en él, por ejemplo esta línea "Cats chase mice", ¿cómo puedo hacerlo?

Respuesta

53

¡También puede usar una función de nivel superior como file_put_contents($filename, $content) que hace un trabajo realmente bueno!

+3

Sólo una nota al margen,' file_put_contents() 'funciona solo en PHP5. No parece ser un problema en este caso (su respuesta fue aceptada, después de todo), pero aún podría haber algunos hosts corriendo PHP4.x. – Duroth

+0

Una nota al margen muy importante: file_put_contents() es una pesadilla de memoria en comparación con fopen(). Me encanta usarlo, pero cuando maneje archivos grandes, quiere poder "transmitir" datos a este. PHP requerirá un gran múltiplo de tamaño de archivo final como memoria interna, así que tenlo en cuenta cuando uses esta función. Para cantidades más pequeñas de datos, lo recomendaría por su fácil uso. – John

+0

Luego use file_put_contents ($ filename, $ other_stream). Es lo mismo que usar stream_copy_to_stream-), que es muy eficiente en la memoria. – Savageman

37

Uso fwrite()

<?php 
$fp = fopen('lidn.txt', 'w'); 
fwrite($fp, 'Cats chase mice'); 
fclose($fp); 
?> 
+0

Muchas gracias !!! – brilliant

+0

Puede usar el código anterior y también puede usar file_put_contents para obtener más información acerca de cómo leer y escribir un archivo; puede consultar http://www.techflirt.com/file-handling-in-php –

+0

@sathish después de escribir en el archivo como arriba, ¿cómo leemos el archivo sin cerrar el archivo ('fclose ($ fp)'), lo intenté con '$ fp = fopen ('lidn.txt', 'w +');', '$ fp = fopen ('lidn.txt', 'a +'); 'pero ninguno de ellos funcionó –

6
$text = "Cats chase mice"; 
$filename = "somefile.txt"; 
$fh = fopen($filename, "a"); 
fwrite($fh, $text); 
fclose($fh); 

Se utilizan fwrite()

+0

después de escribir en el archivo como arriba, ¿cómo leemos el archivo sin cerrar el archivo (' fclose ($ fh) '), lo intenté con' $ fh = fopen ('lidn.txt', 'w +'); ',' $ fh = fopen ('lidn.txt', 'a +'); 'pero ninguno de ellos funcionó –

6

Es fácil escribir archivo:

$fp = fopen('lidn.txt', 'w'); 
fwrite($fp, 'Cats chase mice'); 
fclose($fp); 
3

Utilizo el siguiente código para escribir archivos en mi directorio web.

write_file.html

<form action="file.php"method="post"> 
<textarea name="code">Code goes here</textarea> 
<input type="submit"value="submit"> 
</form> 

write_file.php

<?php 
// strip slashes before putting the form data into target file 
$cd = stripslashes($_POST['code']); 

// Show the msg, if the code string is empty 
if (empty($cd)) 
    echo "Nothing to write"; 

// if the code string is not empty then open the target file and put form data in it 
else 
{ 
    $file = fopen("demo.php", "w"); 
    echo fwrite($file, $cd); 

    // show a success msg 
    echo "data successfully entered"; 
    fclose($file); 
} 
?> 

Este es un script de trabajo. asegúrese de cambiar la url en , realice la acción y el archivo de destino en fopen() función si desea usarlo en su sitio.

Buena suerte.

+0

Acabo de empezar a escribir php, pero parece que no solo está escribiendo un archivo de texto, sino que está escribiendo un archivo de código php en su servidor, que luego podría ejecutarse inmediatamente después al hacer referencia a la URL "demo.php". Alguien podría escribir código PHP malicioso en su servidor e inmediatamente ejecutarlo, ¿verdad? Supongo que esto es para que pueda probar sus propios códigos, pero las personas deben ser advertidas de los riesgos de esta implementación en particular. (Dicho esto, me gusta y lo haremos nosotros mismos) – RufusVS

1

fwrite() es un smidgen más rápido y file_put_contents() es solo una envoltura alrededor de esos tres métodos de todos modos, por lo que perdería la sobrecarga. Article

file_put_contents (archivos, datos, modo, contexto):

El file_put_contents escribe una cadena en un archivo.

Esta función sigue estas reglas cuando se accede a un file.If FILE_USE_INCLUDE_PATH se ajusta, compruebe la ruta de inclusión para obtener una copia del fichero Crear el archivo si no existe, entonces abrir el archivo y bloquear el archivo si es LOCK_EX establecer y si se establece FILE_APPEND, mover al final del archivo. De lo contrario, borre el contenido del archivo Escriba los datos en el archivo y cierre el archivo y suelte los bloqueos. Esta función devuelve el número del carácter escrito en el archivo en caso de éxito o FALSE en caso de error.

fwrite (archivo, cadena, longitud):

El fwrite escribe a una función abierta file.The se detendrá al final del archivo o cuando se alcanza la longitud especificada, lo que ocurra primero. Esta función devuelve el número de bytes escritos o FALSE cuando falla.

Cuestiones relacionadas