Les fichiers (II)
Par Damien, mardi 1 mars 2005 à 20:34 :: PHP :: #10 :: rss
L'exemple précédent n'a pas permis de montrer toutes les possibilités de PHP sur la manipulation des fichiers. Voici donc quelques informations annexes.
1- Tests sur les fichiers
PHP fournit de nombreuses fonctions permettant de faire des tests sur les fichiers pour connaître leurs propriétés.
is_dir()
is_dir() permet de savoir si le fichier dont le nom est passé en paramètre correspond à un répertoire. Renvoie la valeur 1 s' il s'agit d'un répertoire, la valeur 0 dans le cas contraire.
booléen is_dir(chaine Nom_du_fichier);
is_executable()
is_executable() permet de savoir si le fichier dont le nom est passé en paramètre est exécutable. Renvoie la valeur 1 si le fichier est exécutable, la valeur 0 dans le cas contraire.
booléen is_executable(chaine Nom_du_fichier);
is_file()
is_file() permet de savoir si le fichier dont le nom est passé en paramètre ne correspond ni à un répertoire, ni à un lien symbolique. Renvoie la valeur 1 s'il s'agit d'un fichier, la valeur 0 dans le cas contraire.
booléen is_file(chaine Nom_du_fichier);
is_link()
is_link() permet de savoir si le fichier dont le nom est passé en paramètre correspond à un lien symbolique. Renvoie la valeur 1 s'il s'agit d'un lien symbolique, la valeur 0 dans le cas contraire.
booléen is_link(chaine Nom_du_fichier);
Exemple :
2- Autres façons de lire un fichier
Dans certains cas, il peut être rébarbatif de devoir mettre en oeuvre les fonctions fopen() et fgets() pour lire l'intégralité du contenu d'un fichier. Pour cette raison, PHP fournit des fonctions supplémentaires simplifiant certaines opérations.
file()
La fonction file() permet de retourner dans un tableau l'intégralité d'un fichier en mettant chacune de ses lignes dans un élément du tableau.
tableau file(chaine nomdufichier);
L'exemple suivant montre comment parcourir l'ensemble du tableau afin d'afficher le fichier.
fpassthru()
La fonction fpassthru() permet d'afficher le contenu d'un fichier depuis un pointeur (et donc jusqu'à la fin du fichier).
booléen fpassthru(pointeur de fichier fp);
Il est donc, par exemple possible, de lire quelques lignes avec fgets(), puis d'envoyer le reste au navigateur, avec fpassthru().
readfile()
La fonction readfile() est similaire à fpassthru() dans la mesure où elle permet aussi d'afficher le texte contenu dans un fichier. Son utilisation est, par contre, différente puisqu'on lui passe un nom de fichier. Le second argument est optionnel et sert à définir si l'on souhaite chercher dans le "include_path".
booléen readfile(chaine nomdufichier[, booléen includepath]);
Notons qu'il est possible d'ouvrir une connection http ou ftp.
Exemples :
<?php $fichier = "fichier.txt"; $texte_ligne = "-"; while (!feof($fp) || $page != "$texte_ligne") { //on parcoure le fichier jusqu'a la ligne $texte_ligne, ou sinon jusqu'a la fin } } } ?>
include() & require()
Et, évidemment, les indispensables fonctions require() et include() qui interprètent le code PHP se trouvant dans le fichier lu. En réalité, require inclut le code dans le fichier appelant, alors que include interprète le code au fur et à mesure. En pratique, on utilisera require pour inclure des librairies (souvent en début de script), et include pour le reste.
A noter que include est conditionnel alors que require ne l'est pas. Autrement dit, require ne doit pas être utilisé dans les instructions conditionnelles (boucles, if, etc..).
NB : Il existe aussi les fonctions include_once() et require_once(), pour inclure une seule fois le fichier appelé (le fichier ne sera pas inclus une deuxième fois si il a déjà été inclus avant).

Commentaires
1. Le vendredi 12 août 2005 à 09:55, par Goddy
2. Le samedi 13 août 2005 à 16:44, par Damien
3. Le mardi 11 octobre 2005 à 18:26, par Chr
4. Le vendredi 14 octobre 2005 à 22:46, par Damien
5. Le samedi 7 janvier 2006 à 14:47, par invité
6. Le dimanche 15 janvier 2006 à 05:55, par Reikan
7. Le dimanche 18 juin 2006 à 17:34, par houria
8. Le jeudi 13 juillet 2006 à 17:55, par vik
9. Le mercredi 19 juillet 2006 à 11:09, par superform
10. Le dimanche 21 janvier 2007 à 17:28, par geb
11. Le samedi 5 janvier 2008 à 00:43, par test qi
12. Le vendredi 7 novembre 2008 à 12:01, par bonjoour
Ajouter un commentaire