web-dev-qa-db-fra.com

Différence entre file, file_get_contents et fopen dans PHP

Je suis nouveau sur PHP et je ne suis pas sûr: quelle est la différence entre les fonctions file(), file_get_contents() et fopen(), et quand dois-je utiliser l'un sur l'autre?

24
c00L

Les deux premiers, file et file_get_contents sont très similaires. Ils lisent tous les deux un fichier entier, mais file lit le fichier dans un tableau, tandis que file_get_contents le lit dans une chaîne. Le tableau renvoyé par file sera séparé par un saut de ligne, mais chaque élément aura toujours le saut de ligne de fin attaché, vous devrez donc faire attention à cela.

La fonction fopen fait quelque chose de complètement différent: elle ouvre un descripteur de fichier, qui fonctionne comme un flux à lire ou écrire le fichier. C'est une fonction de niveau beaucoup plus bas, un simple wrapper autour de la fonction C fopen, et appeler simplement fopen ne fera rien d'autre qu'ouvrir un flux.

Une fois que vous avez ouvert un handle vers le fichier, vous pouvez utiliser d'autres fonctions comme fread et fwrite pour manipuler les données du handle fait référence à, et une fois que vous avez terminé, vous devrez fermer le flux en utilisant fclose . Ceux-ci vous donnent un contrôle beaucoup plus fin sur le fichier que vous lisez, et si vous avez besoin de données binaires brutes, vous devrez peut-être les utiliser, mais vous pouvez généralement vous en tenir aux fonctions de niveau supérieur.

Donc, pour récapituler:

  • file - Lit tout le contenu du fichier dans un tableau de lignes.
  • file_get_contents - Lit tout le contenu du fichier dans une chaîne.
  • fopen - Ouvre un descripteur de fichier qui peut être manipulé avec d'autres fonctions de bibliothèque, mais ne se lit ni n'écrit lui-même.
80
Alexis King

file - Lit le fichier entier dans un tableau
file_get_contents - Lit le fichier entier dans une chaîne
fopen - Ouvre un fichier ou une URL

12
Miraage