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?
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.file
- Lit le fichier entier dans un tableaufile_get_contents
- Lit le fichier entier dans une chaînefopen
- Ouvre un fichier ou une URL