web-dev-qa-db-fra.com

Puis-je lire un fichier .TXT avec PHP?

Lorsque je commence le processus d'écriture de mon site dans PHP et MySQL, l'un des premiers scripts PHP que j'ai écrits est un script permettant d'initialiser ma base de données. Supprimer/créer la base de données. Déposer/créer chacune des tables. Chargez ensuite les tables à partir de littéraux dans le script.

Tout fonctionne bien! Whoo Hoo :-)

Mais je préférerais lire les données à partir de fichiers plutôt que de les coder en dur dans le script PHP.

J'ai quelques livres sur PHP, mais ils sont tous orientés vers le développement Web avec MySQL. Je ne trouve rien sur la lecture et l'écriture dans des fichiers ordinaires.

Oui, je sais qu'il y a un tas de questions ici sur stackoverflow à propos de la lecture de fichiers TXT, mais lorsque je regarde chacun d'eux, ils sont pour C ou C # ou VB ou Perl. Je commence à penser que PHP ne peut tout simplement pas lire les fichiers :-(

Tout ce dont j’ai besoin est un bref exemple PHP expliquant comment ouvrir un fichier TXT sur le serveur, le lire de manière séquentielle, afficher les données à l'écran et fermer le fichier comme dans cet exemple. pseudo-code:

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

J'aurai également besoin d'écrire des fichiers sur le serveur lorsque j'aurai accès à la partie de mon site où les utilisateurs téléchargent des avatars, puis les enregistrez au format JPG ou GIF. Mais c'est pour plus tard.

Merci!

8
Fredashay

À partir du manuel PHP pour 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);
?>

EDIT Selon le commentaire, vous pouvez lire un fichier ligne par ligne avec 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);
}
?>
22
JKirchartz

Tout ce dont j’ai besoin est un bref exemple PHP expliquant comment ouvrir un fichier TXT sur le serveur, le lire de manière séquentielle, afficher les données à l'écran et fermer le fichier pseudo-code:

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

Oui ce bref, voir file_get_contents , vous n'avez normalement pas besoin de boucle:

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

Eh bien, puisque vous parlez de ressources sur le sujet, il existe un livre entier à ce sujet dansDocs PHP.net.

Un exemple de base:

<?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);
?>
3
Madara Uchiha

Pourquoi ne pas lire la documentation php sur fopen

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

file_get_contents fait tout cela pour vous et retourne le fichier texte dans une chaîne :)

1
Zed

Vous voulez lire ligne par ligne? Utilisez 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);
}
0
Zed