Come scrivere in un file in PHP?


108

Ho questo script su un server gratuito che supporta PHP:

<html>
<body>

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


fclose($file);
?>

</body>
</html>

Crea il file lidn.txt, ma è vuoto.

Come posso creare un file e scriverci qualcosa, ad esempio la riga "Cats chase mice"?

Risposte:


153

Puoi utilizzare una funzione di livello superiore come:

file_put_contents($filename, $content);

che è identico a chiamare fopen(), fwrite()e fclose()successivamente a scrivere dati su un file.

Documenti: file_put_contents


3
Solo una nota a margine, file_put_contents()funziona solo in PHP5. Non sembra un problema in questo caso (la tua risposta è stata accettata, dopotutto), ma potrebbero esserci ancora alcuni host là fuori che eseguono PHP4.x.
Duroth

2
Una nota a margine molto importante: file_put_contents () è un incubo per la memoria rispetto a fopen (). Mi piace usarlo, ma quando si gestiscono file di grandi dimensioni si desidera essere in grado di "trasmettere" dati in esso. PHP richiederà un grande multiplo della dimensione del file finale come memoria interna, quindi tienilo a mente quando usi questa funzione. Per piccole quantità di dati lo consiglierei per il suo facile utilizzo.
Giovanni

1
Quindi usa file_put_contents ($ filename, $ other_stream). È come usare stream_copy_to_stream-), che è molto efficiente in termini di memoria.
Savageman

@Duroth funziona solo in PHP5 o funziona solo da PHP5? quelle sono 2 cose diverse.
Xsmael

2
@Xsmael Non nel lontano passato del 2009;) PHP7 non c'era allora. Ma sì, è put_file_contents()stato introdotto per la prima volta in PHP5 e da allora è stato incluso anche nelle versioni successive.
Duroth

88

Considera fwrite () :

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

Puoi usare il codice sopra anche puoi usare file_put_contents per i dettagli su come leggere e scrivere file che puoi fare riferimento a techflirt.com/file-handling-in-php
Ankur Kumar Singh

@sathish dopo aver scritto nel file come sopra come leggiamo il file senza chiudere il file ( fclose($fp) ), ho provato con $fp = fopen('lidn.txt', 'w+');, $fp = fopen('lidn.txt', 'a+');ma nessuno dei due ha funzionato
Kasun Siyambalapitiya


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

Usate fwrite()


dopo aver scritto nel file come sopra come leggiamo il file senza chiudere il file ( fclose($fh)), ho provato con $fh = fopen('lidn.txt', 'w+');`$ fh = fopen ('lidn.txt', 'a +'); `ma nessuno dei due ha funzionato
Kasun Siyambalapitiya

10

È facile scrivere file:

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

6

Uso il codice seguente per scrivere file sulla mia directory 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);
}
?>

Questo è uno script funzionante. assicurati di cambiare l'URL nell'azione del modulo e il file di destinazione in fopen () se vuoi usarlo sul tuo sito.

In bocca al lupo.


1
Ho appena iniziato a scrivere php ma sembra che tu non stia solo scrivendo un file di testo, ma stai scrivendo un file di codice php sul tuo server, che potrebbe essere eseguito immediatamente dopo facendo riferimento all'URL "demo.php". Qualcuno potrebbe scrivere codice PHP dannoso sul tuo server e eseguirlo immediatamente, giusto? Presumo che sia così che tu possa testare i tuoi codici, ma le persone dovrebbero essere avvertite dei rischi di questa particolare implementazione. (Detto questo, mi piace e lo faremo io stesso)
RufusVS

6

Per scrivere su un file in PHPè necessario eseguire i seguenti passaggi:

  1. Apri il file

  2. Scrivi nel file

  3. Chiudi il file

    $select = "data what we trying to store in a file";
    $file = fopen("/var/www/htdocs/folder/test.txt", "a");
    fwrite($file  , $select->__toString());
         fclose($file );

6

Ecco i passaggi:

  1. Apri il file
  2. Scrivi nel file
  3. Chiudi il file

    $select = "data what we trying to store in a file";
    $file = fopen("/var/www/htdocs/folder/test.txt", "w");        
    fwrite($file, $select->__toString());
    fclose($file);

5

fwrite()è un po 'più veloce ed file_put_contents()è comunque solo un involucro attorno a questi tre metodi, quindi perderai il sovraccarico. Articolo

file_put_contents (file di dati, la modalità, contesto):

La file_put_contentsscrive una stringa in un file.

Questa funzione segue queste regole quando si accede a un file. Se FILE_USE_INCLUDE_PATH è impostato, controllare il percorso di inclusione per una copia di nome file Crea il file se non esiste, quindi Apri il file e Blocca il file se LOCK_EX è impostato e Se FILE_APPEND è impostato, spostarsi alla fine del file. Altrimenti, cancella il contenuto del file. Scrivi i dati nel file, chiudi il file e rilascia eventuali blocchi. Questa funzione restituisce il numero del carattere scritto nel file in caso di successo o FALSE in caso di fallimento.

fwrite (file, string, lunghezza):

Le fwritescritture di una funzione file.The aperto si fermerà alla fine del file o quando raggiunge la lunghezza indicata, a seconda di quale viene first.This funzione restituisce il numero di byte scritti o FALSE in caso di fallimento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.