Comment écrire dans un fichier en PHP?


108

J'ai ce script sur un serveur gratuit prenant en charge PHP:

<html>
<body>

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


fclose($file);
?>

</body>
</html>

Il crée le fichier lidn.txt, mais il est vide.

Comment puis-je créer un fichier et y écrire quelque chose, par exemple la ligne «Les chats chassent les souris»?

Réponses:


153

Vous pouvez utiliser une fonction de niveau supérieur comme:

file_put_contents($filename, $content);

qui est identique à l'appel fopen(), fwrite()et fclose()successivement pour écrire des données dans un fichier.

Documents: file_put_contents


3
Juste une remarque, file_put_contents()fonctionne uniquement en PHP5. Cela ne semble pas être un problème dans ce cas (votre réponse a été acceptée, après tout), mais il se peut qu'il y ait encore quelques hôtes exécutant PHP4.x.
Duroth

2
Une remarque très importante: file_put_contents () est un cauchemar de mémoire par rapport à fopen (). J'adore l'utiliser, mais lorsque vous manipulez des fichiers volumineux, vous voulez pouvoir y «diffuser» des données. PHP nécessitera un grand multiple de la taille finale du fichier en tant que mémoire interne, alors gardez cela à l'esprit lorsque vous utilisez cette fonction. Pour de plus petites quantités de données, je le recommande pour son utilisation facile.
John

1
Utilisez ensuite file_put_contents ($ filename, $ other_stream). C'est la même chose que d'utiliser stream_copy_to_stream-), qui est très efficace en mémoire.
Savageman

@Duroth ça marche uniquement en PHP5 ou ça marche uniquement à partir de PHP5? ce sont 2 choses différentes.
Xsmael le

2
@Xsmael Pas dans le passé lointain de 2009;) PHP7 n'était pas là à l'époque. Mais oui, a put_file_contents()été introduit pour la première fois dans PHP5, et a été inclus depuis, dans les versions ultérieures également.
Duroth le

88

Considérez fwrite () :

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

Vous pouvez utiliser le code ci-dessus, vous pouvez également utiliser file_put_contents pour plus de détails sur la lecture et l'écriture de fichiers que vous pouvez consulter sur techflirt.com/file-handling-in-php
Ankur Kumar Singh

@sathish après avoir écrit dans le fichier comme ci-dessus comment pouvons-nous lire le fichier sans fermer le fichier ( fclose($fp) ), j'ai essayé avec $fp = fopen('lidn.txt', 'w+');, $fp = fopen('lidn.txt', 'a+');mais aucun d'eux n'a fonctionné
Kasun Siyambalapitiya


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

Tu utilises fwrite()


après avoir écrit dans le fichier comme ci-dessus comment pouvons-nous lire le fichier sans fermer le fichier ( fclose($fh)), j'ai essayé avec $fh = fopen('lidn.txt', 'w+');, `$ fh = fopen ('lidn.txt', 'a +'); `mais aucun d'eux n'a fonctionné
Kasun Siyambalapitiya

10

Il est facile d'écrire un fichier:

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

6

J'utilise le code suivant pour écrire des fichiers sur mon répertoire 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);
}
?>

Ceci est un script fonctionnel. assurez-vous de changer l'url dans l' action de formulaire et le fichier cible dans la fonction fopen () si vous souhaitez l'utiliser sur votre site.

Bonne chance.


1
Je viens de commencer à écrire php mais il semble que vous n'écrivez pas seulement un fichier texte, mais que vous écrivez un fichier de code php sur votre serveur, qui pourrait alors être exécuté immédiatement après en référençant l'URL "demo.php". Quelqu'un pourrait écrire du code PHP malveillant sur votre serveur et l'exécuter immédiatement, non? Je suppose que c'est pour que vous puissiez tester vos propres codes, mais les gens doivent être avertis des risques de cette mise en œuvre particulière. (Cela étant dit, je l'aime et nous le ferons moi-même)
RufusVS

6

Pour écrire dans un fichier, PHPvous devez suivre les étapes suivantes:

  1. Ouvrez le fichier

  2. Ecrire dans le fichier

  3. Fermez le dossier

    $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

Voici les étapes:

  1. Ouvrez le fichier
  2. Ecrire dans le fichier
  3. Fermez le dossier

    $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()est un peu plus rapide et file_put_contents()n'est de toute façon qu'un wrapper autour de ces trois méthodes, donc vous perdriez la surcharge. Article

file_put_contents (fichier, données, mode, contexte):

Le file_put_contentsécrit une chaîne dans un fichier.

Cette fonction suit ces règles lors de l'accès à un fichier.Si FILE_USE_INCLUDE_PATH est défini, vérifiez le chemin d'inclusion pour une copie du nom de fichier Créez le fichier s'il n'existe pas puis ouvrez le fichier et verrouillez le fichier si LOCK_EX est défini et si FILE_APPEND est défini, aller à la fin du fichier. Sinon, effacez le contenu du fichier. Écrivez les données dans le fichier, fermez le fichier et libérez les verrous. Cette fonction renvoie le numéro du caractère écrit dans le fichier en cas de succès, ou FALSE en cas d'échec.

fwrite (fichier, chaîne, longueur):

La fonction fwriteécrit dans un fichier ouvert. La fonction s'arrête à la fin du fichier ou lorsqu'elle atteint la longueur spécifiée, selon la première éventualité. Cette fonction renvoie le nombre d'octets écrits ou FALSE en cas d'échec.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.