Lecture et écriture dans un fichier php. Création, lecture et écriture de fichiers php. Exemple #1 Exemple d'utilisation simple

Dernière mise à jour: 1.11.2015

Comme la plupart des langages de programmation, PHP prend en charge le travail avec des fichiers, qui sont l'un des moyens de stocker des informations.

Lecture et écriture de fichiers

Ouverture et fermeture de fichiers

PHP définit la fonction fopen() pour ouvrir les fichiers. Il a la définition suivante : ressource fopen (chaîne $ nom de fichier, chaîne $ mode). Le premier paramètre, $ filename, représente le chemin d'accès au fichier et le second, le mode d'ouverture. Selon le but de l'ouverture et le type de dossier ce paramètre peut prendre les valeurs suivantes :

    "r": Le fichier est ouvert en lecture seule. Renvoie false si le fichier n'existe pas

    "r +": Le fichier est ouvert en lecture seule avec la possibilité d'écrire. Renvoie false si le fichier n'existe pas

    "w" : le fichier est ouvert en écriture. Si un tel fichier existe déjà, il est écrasé, sinon, il est créé.

    "w +": Le fichier est ouvert en écriture et lisible. Si un tel fichier existe déjà, il est écrasé, sinon, il est créé.

    "a" : le fichier est ouvert en écriture. Si un tel fichier existe déjà, les données sont écrites à la fin du fichier et les anciennes données restent. Si le fichier n'existe pas, alors il est créé

    "a +": Le fichier est ouvert en lecture et en écriture. Si le fichier existe déjà, les données sont ajoutées à la fin du fichier. Si le fichier n'existe pas, il est créé.

La fonction fopen renvoie un descripteur de fichier. Ce handle est utilisé pour les opérations sur le fichier et pour sa fermeture.

Une fois le travail terminé, le fichier doit être fermé à l'aide de la fonction fclose(), qui prend un descripteur de fichier en paramètre. Par exemple, ouvrons et fermons un fichier :

$ fd = fopen ("form.php", "r") ou die ("impossible d'ouvrir le fichier"); fclose ($ fd);

La construction or die ("error text") vous permet de terminer le script et d'afficher un message d'erreur si la fonction fopen n'a pas pu ouvrir le fichier.

Lire un fichier

Plusieurs fonctions peuvent être utilisées pour lire le fichier. Pour la lecture ligne par ligne, la fonction fgets() est utilisée, qui reçoit un descripteur de fichier et renvoie une ligne lue. Parcourons tout le fichier ligne par ligne :

Chaque fois que fgets() est appelé, PHP place le pointeur à la fin de la ligne qu'il a lue. Pour tracer la fin d'un fichier, la fonction feof() est utilisée, qui renvoie true lorsque le fichier se termine. Jusqu'à ce que la fin du fichier soit atteinte, nous pouvons utiliser la fonction fgets().

Lecture de l'intégralité du fichier

Dans ce cas, nous n'avons pas besoin d'ouvrir le fichier explicitement, d'obtenir le descripteur, puis de fermer le fichier.

Lecture de bloc

Vous pouvez également effectuer une lecture bloc par bloc, c'est-à-dire lire un certain nombre d'octets d'un fichier à l'aide de la fonction fread() :

La fonction fread() prend deux paramètres : le descripteur de fichier à lire et le nombre d'octets à lire. Lorsqu'un bloc est lu, le pointeur de fichier se déplace à la fin de ce bloc. Et également en utilisant la fonction feof (), vous pouvez suivre l'achèvement du fichier.

Enregistrement de fichier

Pour écrire un fichier, la fonction fwrite() est utilisée, qui écrit une ligne dans le fichier :

Une autre fonction fputs() fonctionne de la même manière :

Travailler avec un pointeur de fichier

Lorsqu'un fichier est ouvert en lecture ou en écriture en mode "w", le pointeur de fichier est placé au début. Lors de la lecture données PHP Déplace le pointeur de fichier à la fin du bloc de données lu. Cependant, nous pouvons également manipuler manuellement le pointeur de fichier et le définir à un emplacement arbitraire. Pour cela, utilisez la fonction chercher, qui a la définition formelle suivante :

Int fseek (ressource $ handle, int $ offset [, int $ d'où = SEEK_SET])

Le paramètre $ handle représente un handle vers le fichier. Le paramètre $ offset est l'offset en octets par rapport au début du fichier à partir duquel la lecture/écriture va démarrer. Le troisième paramètre facultatif spécifie comment le décalage est défini. Il peut prendre trois valeurs :

    SEEK_SET : valeur par défaut, définit l'offset en octets de décalage depuis le début du fichier

    SEEK_CUR : définit un décalage en octets de décalage à partir du début de la position actuelle dans le fichier

    SEEK_END : définit un décalage d'octets à partir de la fin du fichier

Si le pointeur est correctement défini, la fonction fseek() renvoie 0, et si elle échoue, elle renvoie -1.

Un exemple d'utilisation de la fonction :

$ fd = fopen ("hello.txt", "w +") ou die ("impossible d'ouvrir le fichier"); $ str = "Bonjour tout le monde !"; // chaîne à écrire fwrite ($ fd, $ str); // écrit la chaîne au début fseek ($ fd, 0); // place le pointeur de fichier au début fwrite ($ fd, "Oink"); // écrit au début de la ligne fseek ($ fd, 0, SEEK_END); // place le pointeur à la fin fwrite ($ fd, $ str); // ajoute une autre ligne à la fin fclose ($ fd);

16.5K

En fait, ouvrir un fichier php n'est pas un gros problème. Il peut être plus difficile d'ouvrir une bouteille de bière lorsque vous êtes au milieu de la forêt. Mais seuls les programmeurs passionnés le pensent. Et pour les débutants, nous vous parlerons de toutes les possibilités de php pour travailler avec des fichiers :

fichiers php

Les fichiers avec l'extension php contiennent du code écrit dans le langage de programmation du même nom. Contrairement à d'autres langages, php est un langage de programmation côté serveur. C'est-à-dire qu'il s'exécute côté serveur. Par conséquent, pour déboguer son code, un serveur local doit être installé sur la machine cliente.

Pour travailler avec des fichiers php, utilisez applications spéciales- les éditeurs de logiciels. Les plus courantes sont :

  • Tisse-rêve.
  • PHPModifier.
  • Développement PHP Eclipse.
Lors de la création de sites sur basé sur php la réutilisation du code peut être requise. Dans de telles situations, il est pratique de se connecter déjà des solutions toutes faites situé dans un autre fichier. La construction include est utilisée pour cela. Sa syntaxe est :

inclure le nom de fichier

Exemple de connexion :

Fichier inclus :


Il est également possible d'inclure un fichier en utilisant la construction require. Contrairement à include, il inclut le fichier avant même que le code du programme ne soit exécuté. A l'aide de require dans le code, un seul appel à ce fichier est possible. Si vous l'appelez à nouveau, le système émettra un message d'erreur global et arrêtera l'exécution du programme.

La construction include inclut la source uniquement pendant l'exécution du programme. Il prend en charge la lecture multiple du fichier php. Si une erreur se produit, seul un message d'avertissement sera affiché et l'exécution du code continuera à partir de la ligne suivante.

Ouverture et fermeture de fichiers

En php, toutes les opérations sur les fichiers s'effectuent en plusieurs étapes :

  • Ouverture d'un fichier ;
  • Éditer le contenu ;
  • Fermeture du dossier.

La fonction fopen() est utilisée pour ouvrir le fichier. Sa syntaxe est :

int fopen (chaîne nom de fichier, chaîne mode [, int use_include_path])

Arguments acceptés :

  • string filename - nom de fichier ou chemin absolu vers celui-ci. Si le chemin d'accès au fichier n'est pas spécifié, alors il sera recherché dans le répertoire courant. Si le fichier que vous recherchez est manquant, le système affichera un message d'erreur. Exemple:

  • mode chaîne - indique le mode d'ouverture du fichier. Valeurs acceptées par l'argument :
  • r - le fichier est ouvert en lecture seule, le pointeur de fichier est défini au début ;
  • r + - le fichier est ouvert en lecture et en écriture ;
  • w - Crée un nouveau fichier en écriture seule. Si un fichier du même nom existe déjà, toutes les données y sont automatiquement supprimées ;
  • w + - un nouveau fichier est créé pour l'écriture et la lecture. Si un tel fichier existe, ses données sont complètement écrasées par de nouvelles ;
  • a - le fichier est ouvert en écriture. Le pointeur est positionné à la fin. c'est-à-dire une entrée dans fichier php commencera non pas du commencement, mais de la fin;
  • a + - ouvrir le fichier en lecture et en écriture. L'enregistrement commencera à partir de la fin ;
  • b - le mode de travail avec un fichier contenant des données binaires (en système binaire calcul). Ce mode n'est disponible que dans système opérateur Les fenêtres.

Pour fermer l'accès à un fichier, utilisez la fonction fclose(). Syntaxe:

int fclose (fichier int), où fichier int est le descripteur de site à fermer.

Après chaque lecture ou écriture, le fichier doit être fermé avec cette fonction. Sinon, le flux créé pour le fichier reste ouvert. Et cela conduit à une consommation inutile des capacités du serveur.

Exemple:

Lecture et écriture de fichiers

La fonction readfile() est idéale pour afficher simplement tout le contenu d'un fichier. Sa syntaxe est :

readfile (chaîne de nom de fichier), où chaîne de fichier est la chaîne de nom de fichier (pas un descripteur).


Le même fichier peut être lu à l'aide de la fonction fpassthru (). Il lit les données de la position finale du pointeur à la fin du fichier. Sa syntaxe est :

int fpassthru (fichier int)

La fonction nécessite l'ouverture et la fermeture d'un fichier. Exemple:

Le résultat est similaire au précédent.

Les fonctions pour travailler avec des fichiers en php vous permettent de lire le contenu ligne par ligne et caractère par caractère :

  • chaîne fgets (fichier int, longueur int)- la fonction lit une chaîne de longueur longueur. Exemple:

  • chaîne fread (fichier int, longueur int)- l'action est identique à la précédente.

Il existe deux fonctions identiques pour écrire des données texte dans un fichier :

  • int fputs (fichier int, chaîne de caractères [, longueur int])
  • int fwrite (fichier int, chaîne de caractères [, longueur int])

Les fonctions écrivent dans le fichier int file une chaîne chaîne chaîne de la longueur spécifiée int length ( argument optionnel). Exemple:

Création et suppression de fichiers

Pour créer un fichier php, vous pouvez utiliser la fonction fopen() en mode d'accès "w" ou "w+". Ou la fonction tactile (). Il définit l'heure de modification du fichier. S'il n'y a pas d'élément avec le nom requis, il sera créé. Sa syntaxe.

Très souvent, lorsqu'on travaille sur un serveur, il est nécessaire de lire, enregistrer, ajouter et supprimer des données d'un fichier. Il existe des fonctions spéciales pour cela en PHP.
Avant de commencer à travailler avec un fichier, vous devez l'ouvrir à l'aide de la fonction fopen (nom_fichier, mode), où nom_fichier est le nom du fichier à ouvrir pour le travail et mode est le mode d'ouverture du fichier. Les options de mode suivantes sont possibles :

  • r - lecture seule ;
  • r + - lire et écrire au début du fichier ;
  • w - le fichier est ouvert en écriture ;
  • w + - écrire et lire. Le contenu existant sera effacé ;
  • a - le fichier est ouvert pour l'ajout de données ;
  • a + - mode avancé, dans lequel le fichier est ouvert pour ajout et lecture.
    La fonction fopen renvoie un pointeur vers le fichier à ouvrir.
    Exemple. $ nouveau_fichier = fopen ("nom_fichier", "w"); // ouvre le fichier "name_file" en écriture, // et place le pointeur sur le fichier à ouvrir dans la variable new_file.

    Ecriture dans un fichier php

    Après avoir ouvert le fichier, nous pouvons y écrire des données à l'aide de la fonction fwrite (ref_file, data), où ref_file est un pointeur vers fichier ouvert renvoyé par fopen, les données sont les données à écrire. fwrite ($ new_file, "Première ligne du fichier"); À la suite de l'exécution du code ci-dessus, ce qui suit sera écrit dans le fichier sous le lien $ new_file : "La première ligne du fichier".

    Lecture du fichier php

    Un fichier ouvert peut être lu à l'aide de la fonction file (file_name), où file_name est le nom du fichier. La fonction renvoie un tableau dont les éléments sont les lignes du fichier et l'index est le numéro de ligne.
    La numérotation commence à partir de 0. $ data = file (“file_name”); Dans cette ligne de code, le tableau formé lors de la lecture du fichier file_name est écrit dans la variable data.
    Après avoir terminé toutes les actions, le fichier doit être fermé avec la fonction fclose (ref_file), où ref_file est un lien vers le fichier à fermer. fclose ($ nouveau_fichier); Le fichier qui a le lien enregistré dans la variable new_file sera fermé. Considérons un exemple simple de création d'un fichier et d'écriture de données à l'aide d'un exemple de document HTML. Le code suivant est fourni avec des commentaires pour chaque ligne. Exemple d'écriture dans un fichier // fin du script php

    Si ce site vous a été utile, vous pouvez aider à son développement en le plaçant sur votre site.

  • Utilisation des fonctions fopen, fclose, feof, fgets, fgetss et fscanf

    Listons toutes les possibilités

    L'un des avantages de travailler avec des langages de programmation modernes comme PHP est le nombre de opportunités disponibles... PHP aurait facilement pu adopter la devise de Perl, "Il y a plusieurs façons de faire quelque chose", surtout en ce qui concerne la gestion des fichiers. Mais avec la pléthore de fonds disponibles, la question se pose de savoir lequel est le meilleur pour faire le travail. Bien sûr, en réalité, la réponse à cette question dépend des objectifs que vous vous fixez lors du traitement du fichier, donc l'apprentissage de toutes les fonctionnalités de la langue en vaut la peine.

    Méthodes fopen traditionnelles

    Les méthodes fopen sont peut-être plus familières aux programmeurs C et C++ d'autrefois, car elles sont, dans une plus ou moins grande mesure, exactement les outils qui sont à portée de main depuis de nombreuses années si vous avez travaillé avec ces programmations. langues. Pour chacune de ces méthodes, vous suivez une procédure standard, en utilisant fopen pour ouvrir le fichier, une fonction pour lire les données, puis fclose pour fermer le fichier, comme indiqué dans le listing 1.

    Listing 1. Ouvrir et lire un fichier avec fgets
    $ file_handle = fopen ("monfichier", "r"); while (! feof ($ file_handle)) ($ line = fgets ($ file_handle); echo $ line;) fclose ($ file_handle);

    Bien que ces fonctions soient familières à la plupart des programmeurs expérimentés, permettez-moi d'analyser leur fonctionnement. En réalité, vous suivez ces étapes :

    1. Ouvrez le fichier. $ file_handle stocke un lien vers le fichier lui-même.
    2. Vérifiez si vous avez atteint la fin du fichier.
    3. Continuez à lire le fichier jusqu'à la fin, en imprimant chaque ligne que vous lisez.
    4. Fermez le fichier.

    Dans cet esprit, je vais passer en revue chaque fonction de fichier utilisée ici.

    Fonction Fopen

    La fonction fopen établit un lien vers un fichier. Je dis "connecte" car, en plus d'ouvrir un fichier, fopen peut aussi ouvrir une URL :

    $ fh = fopen ("http://127.0.0.1/", "r");

    Cette ligne de code crée un lien vers la page ci-dessus et vous permet de commencer à la lire en tant que fichier local.

    Noter: Le paramètre "r" utilisé dans fopen indique que le fichier est ouvert en lecture seule. Étant donné que l'écriture dans un fichier dépasse le cadre de cet article, je ne listerai pas toutes les valeurs possibles du paramètre. Cependant, vous devez remplacer « r » par « rb » si vous lisez à partir de fichiers binaires pour une compatibilité multiplateforme. Un exemple de ce type sera donné ci-dessous.

    Fonction Feof

    La commande feof détermine si une lecture a été effectuée jusqu'à la fin du fichier et renvoie True ou False. La boucle donnée en continue jusqu'à la fin du fichier "monfichier". Notez que feof renvoie également False si vous lisez une URL et que la connexion a expiré car il n'y a plus de données à lire.

    Fonction Fclose

    Sautez le milieu de la liste 1 et allez jusqu'à la fin ; fclose fait le contraire de fopen : il ferme la connexion à un fichier ou une URL. Après avoir exécuté cette fonction, vous ne pourrez plus lire à partir d'un fichier ou d'un socket.

    Fonction Fgets

    En remontant de quelques lignes dans le Listing 1, vous êtes au cœur du processus de traitement du fichier : la lecture directe du fichier. La fonction fgets est votre "arme" de choix pour le premier exemple. Il récupère une ligne de données d'un fichier et la renvoie sous forme de chaîne. À partir de là, vous pouvez sortir des données ou les traiter d'une autre manière. L'exemple du listing 1 imprime le fichier entier.

    Si vous décidez de limiter la taille du bloc de données sur lequel vous travaillez, vous pouvez ajouter un argument à fgets pour limiter la longueur maximale de la ligne de données capturée. Par exemple, utilisez le code suivant pour limiter la longueur de la chaîne à 80 caractères :

    $ chaîne = fgets ($ file_handle, 81);

    Pensez à "\ 0", la fin de ligne en C, et définissez la longueur sur un caractère de plus que ce dont vous avez réellement besoin. Comme vous pouvez le voir, l'exemple ci-dessus utilise 81, alors que vous avez besoin de 80 caractères. Prenez l'habitude d'ajouter un caractère supplémentaire chaque fois que vous devez définir une limite de longueur de chaîne pour une fonction donnée.

    Fonction Fread

    La fonction fgets n'est qu'une des nombreuses fonctions disponibles pour lire un fichier. C'est l'une des fonctions les plus couramment utilisées, car le traitement ligne par ligne d'un fichier est le plus judicieux dans la plupart des cas. En fait, plusieurs autres fonctionnalités offrent des capacités similaires. Cependant, l'analyse ligne par ligne n'est pas toujours ce que vous voulez.

    Et c'est là que nous nous tournons vers la peur. La fonction fread est utilisée dans un but légèrement différent de celui de fgets : elle est destinée à lire à partir de binaires (c'est-à-dire de fichiers qui ne sont pas à l'origine du texte lisible par l'homme). Le concept de "chaînes" n'étant pas pertinent pour les fichiers binaires (les structures de données logiques ne sont généralement pas découpées en lignes), vous devez spécifier le nombre d'octets à lire.

    $ fh = fopen ("monfichier", "rb"); $ data = fread ($ file_handle, 4096);

    L'exemple ci-dessus lit 4096 octets (4 Ko) de données. Notez que quelle que soit la valeur que vous spécifiez, fread ne lira pas plus de 8192 octets (8 Ko).

    En supposant que le fichier ne dépasse pas 8 Ko, l'extrait de code ci-dessous doit lire l'intégralité du fichier sur une seule ligne.

    $ fh = fopen ("monfichier", "rb"); $ data = fread ($ fh, filesize ("monfichier")); ffermer ($ fh);

    Si le fichier est plus volumineux, vous devrez utiliser une boucle pour lire le reste du fichier.

    Fonction Fscanf

    Pour en revenir au traitement de ligne, notez que fscanf est également le successeur de la fonction de bibliothèque C traditionnelle basée sur un fichier. Si vous ne la connaissez pas, fscanf lit les champs de données dans les variables d'un fichier.

    liste ($ champ1, $ champ2, $ champ3) = fscanf ($ fh, "% s% s% s");

    Les chaînes de formatage utilisées dans cette fonction sont documentées dans de nombreuses sources telles que PHP.net, je ne répéterai donc pas cette information ici. Qu'il suffise de dire que le formatage des chaînes est très flexible. Il convient également de mentionner que tous les champs sont placés dans une variable renvoyée par la fonction. (En C, ils seraient passés comme arguments.)

    Fonction Fgetss

    La fonction fgetss est différente des fonctions de fichiers traditionnelles et vous donne une meilleure idée de ce que PHP peut faire. Il fonctionne comme fgets, mais rejette tout ce qu'il trouve. Balises HTML ou PHP, en ne laissant que le texte "nu". Prenons le fichier HTML ci-dessous.

    Liste 2. Exemple fichier HTML
    mon titre

    Si vous comprenez ce que "Cause there is" t no one for to give you no pain "signifie alors vous écoutez trop le groupe America

    Exécutons-le via la fonction fgetss.

    Listing 3. Utilisation de fgetss
    $ file_handle = fopen ("monfichier", "r"); while (! feof ($ file_handle)) (echo = fgetss ($ file_handle);) fclose ($ file_handle);

    Voici ce que vous obtenez en sortie :

    Mon titre Si tu comprends ce que "Cause there ain" t no one for to give you no pain "signifie alors tu écoutes trop le groupe America

    Fonction Fpassthru

    Quelle que soit la façon dont vous lisez les données du fichier, vous pouvez imprimer les données restantes à l'aide du canal de sortie standard à l'aide de la fonction fpassthru.

    fpassthru ($ fh);

    Cette fonction imprime les données, vous n'avez donc pas besoin de les mettre dans une variable.

    Traitement de fichier non linéaire : déplacement dans le fichier

    Bien entendu, les fonctions ci-dessus vous permettent uniquement de lire à partir d'un fichier de manière séquentielle. Les fichiers plus complexes peuvent nécessiter que vous vous déplaciez vers différentes parties du fichier au début ou à la fin. Pour ce faire, vous avez besoin de la fonction fseek.

    fcherche ($ fh, 0);

    L'exemple ci-dessus revient au début du fichier. Si vous ne voulez pas aller au tout début du fichier - disons, un kilo-octet est suffisant - vous écrivez simplement :

    fseek ($ fh, 1024);

    Depuis PHP V4.0, plusieurs autres options sont également disponibles. Par exemple, si vous devez avancer de 100 octets à partir de votre position actuelle, vous pouvez utiliser le code suivant :

    fseek ($ fh, 100, SEEK_CUR);

    De même, le retour en arrière de 100 octets se fait par :

    fseek ($ fh, -100, SEEK_CUR);

    Si vous souhaitez revenir à 100 octets avant la fin du fichier, utilisez plutôt SEEK_END.

    fseek ($ fh, -100, SEEK_END);

    Une fois que vous avez atteint votre nouvelle position, vous pouvez utiliser fgets, fscanf ou une autre fonction pour lire les données.

    Noter: vous ne pouvez pas utiliser fseek sur les descripteurs de fichiers référençant des URL.

    Capturer un fichier entier

    Passons maintenant à quelques opportunités uniques PHP pour le traitement de fichiers : traitement de gros blocs de données sur une ou deux lignes. Par exemple, comment pouvez-vous récupérer un fichier et afficher tout son contenu sur votre page Web ? Eh bien, vous avez vu un exemple d'utilisation d'une boucle avec fgets. Mais comment pouvez-vous le rendre plus facile? Le processus est presque ridiculement simple avec fgetcontents, qui place le fichier entier sur une chaîne.

    $ my_file = file_get_contents ("myfilename"); echo $ mon_fichier ;

    Bien que ce ne soit pas la meilleure voie, vous pouvez écrire cette commande encore plus courte :

    echo file_get_contents ("myfilename");

    Cet article concerne principalement le traitement fichiers locaux Cependant, il convient de noter que vous pouvez également capturer, afficher et analyser d'autres pages Web à l'aide des fonctions décrites.

    echo file_get_contents ("http://127.0.0.1/");

    Cette commande est en fait la même que :

    $ fh = fopen ("http://127.0.0.1/", "r"); fpassthru ($ fh);

    Vous devez regarder ces exemples et penser : « Cela prend encore trop de temps. » Les développeurs PHP sont d'accord avec vous. Par conséquent, vous pouvez raccourcir la commande ci-dessus pour :

    readfile ("http://127.0.0.1/");

    La fonction readfile écrit par défaut l'intégralité du contenu d'un fichier ou d'une page Web dans le tampon de sortie. Par défaut, cette commande affiche un message d'erreur en cas d'échec. Pour éviter ce comportement (si vous le souhaitez), essayez la commande :

    @readfile ("http://127.0.0.1/");

    Bien sûr, si vous devez traiter le contenu des fichiers, la seule ligne renvoyée par file_get_contents est probablement trop importante. Vous voudrez peut-être d'abord le diviser en parties à l'aide de la fonction split ().

    $ array = split ("\ n", file_get_contents ("myfile"));

    Mais pourquoi avez-vous besoin de toutes ces complications s'il existe une fonction parfaitement adaptée qui fera le travail pour vous ? La fonction PHP file() fait cela en une seule étape : elle renvoie un tableau de chaînes dont les éléments sont les chaînes du fichier.

    $ array = fichier ("monfichier");

    Il convient de noter qu'il existe une légère différence entre les deux exemples ci-dessus. La commande split supprime les retours à la ligne, tandis que la commande de fichier se termine par des retours à la ligne (comme avec fgets).

    Les capacités de PHP, cependant, dépassent de loin celles décrites ci-dessus. Vous pouvez analyser des fichiers .ini de style PHP entiers avec une seule commande parse_ini_file. La commande parse_ini_file s'applique aux fichiers similaires à ceux du Listing 4.

    Listing 4. Un exemple de fichier .ini
    ; Nom du commentaire = quête "King Arthur" = Chercher le Saint Graal Couleur préférée = Bleu Samuel Clemens = Mark Twain Caryn Johnson = Whoopi Goldberg

    Les commandes suivantes représentent un fichier sous forme de tableau, puis impriment ce tableau :

    $ file_array = parse_ini_file ("holy_grail.ini"); print_r $ file_array;

    Cela produira la sortie suivante :

    Liste 5. Sortie
    Array (=> Roi Arthur => Chercher le Saint Graal => Bleu => Mark Twain => Whoopi Goldberg)

    Bien sûr, vous pouvez voir que cette commande a fusionné des sections. C'est la valeur par défaut, mais vous pouvez facilement faire les ajustements nécessaires en utilisant le deuxième argument de parse_ini_file : process_sections, qui est une variable booléenne. Définissez process_sections sur True.

    $ file_array = parse_ini_file ("holy_grail.ini", true); print_r $ file_array;

    Et votre sortie ressemblera à :

    Liste 6. Sortie
    Array (=> Array (=> King Arthur => Chercher le Saint Graal => Blue) => Array (=> Mark Twain => Whoopi Goldberg))

    PHP place les données dans un tableau multidimensionnel qui peut être facilement analysé pour l'analyse.

    Mais ce n'est que la pointe de l'iceberg en ce qui concerne la gestion des fichiers en PHP. Suite fonctions complexes par exemple, tidy_parse_file et xml_parse peuvent vous aider à traiter respectivement les documents HTML et XML. Référez-vous à la section pour plus des informations détaillées sur le fonctionnement de ces fonctions. Les deux valent la peine d'être considérés si vous travaillez avec ces types de fichiers, mais au lieu de regarder tous les types de fichiers possibles, vous pouvez lire attentivement le contenu de cet article, où il existe de bonnes règles générales pour travailler avec les fonctions que j'ai décrites jusque là.

    Bon style de programmation

    Ne supposez jamais que tout dans votre programme fonctionnera comme prévu. Par exemple : et si le fichier que vous recherchez a été déplacé ? Que se passe-t-il si, à la suite d'une modification des autorisations, vous ne pouvez pas lire le contenu du fichier ? Vous pouvez vérifier à l'avance l'existence d'un fichier et les autorisations pour le lire en utilisant les méthodes file_exists et is_readable.

    Listing 7. Utilisation de file_exists et is_readable
    $ nom_fichier = "monfichier" ; if (file_exists ($ filename) && is_readable ($ filename)) ($ fh = fopen ($ filename, "r"); # Traitement fclose ($ fh);)

    Cependant, en pratique, ce morceau de code sera peut-être excessif pour votre tâche. La gestion des valeurs renvoyées par fopen est plus simple et plus précise.

    if ($ fh = fopen ($ filename, "r")) (# Processing fclose ($ fh);)

    Étant donné que fopen renvoie False en cas d'échec, cela garantit que le fichier n'est traité que s'il peut être ouvert. Bien sûr, si le fichier n'existe pas ou est illisible, vous vous attendriez à ce que la valeur de retour soit négative. Par conséquent, un tel contrôle est un piège dans lequel tous dysfonctionnements possibles... Vous pouvez également utiliser l'arrêt du programme ou afficher un message d'erreur si le fichier ne peut pas être ouvert.

    Comme fopen, file_get_contents, file et readfile renvoient False si le fichier ne peut pas être ouvert ou traité. Les fonctions fgets, fgetss, fread, fscanf et fclose renvoient également False en cas d'erreur. Bien sûr, à l'exception de fclose, vous avez probablement déjà traité les résultats qu'ils renvoient. En ce qui concerne fclose, il n'y a pas grand-chose à faire si le descripteur de fichier ne se ferme pas correctement, donc vérifier la valeur de retour de fclose est généralement excessif.

    Le choix t'appartient

    PHP ne manque pas de moyens efficaces pour lire et analyser les fichiers. Les fonctions classiques comme fread peuvent vous servir de manière fiable la plupart du temps, ou vous pouvez être plus attiré par la simplicité de readfile si nécessaire pour accomplir la tâche. Le choix dépend vraiment de ce que vous essayez d'accomplir.

    Si vous traitez de grandes quantités de données, fscanf est susceptible d'être plus utile et efficace que, par exemple, l'utilisation de file en conjonction avec les commandes split et sprintf suivantes. Alternativement, si vous affichez simplement du texte volumineux avec des modifications mineures, les fonctions file, file_get_contents ou readfile peuvent être plus appropriées. Cette solution est susceptible d'être correcte lorsque en utilisant PHP pour mettre en cache ou même créer un serveur proxy temporaire.

    PHP fournit de nombreux outils pour travailler avec des fichiers. Apprenez à mieux les connaître et découvrez quels outils sont les mieux adaptés au projet sur lequel vous travaillez. Une grande variété d'outils logiciels vous est proposée, utilisez-les plus efficacement et amusez-vous à traiter vos fichiers avec PHP.

    Chaque programmeur devrait être capable de travailler correctement avec des fichiers. Cet article s'adresse aux programmeurs PHP novices, cependant, la "collection de recettes" sera utile pour les utilisateurs avancés.

    Le travail avec des fichiers est divisé en 3 étapes :

    1. Ouverture d'un fichier.
    2. Manipulation de données.
    3. Fermeture du dossier.

    je. Ouvrir un fichier

    Pour ouvrir un fichier dans l'environnement PHP, utilisez la fonction fopen ()... Les paramètres requis pour cette fonction sont le nom de fichier et le mode de fichier.

    $ fp = fopen ("counter.txt", "r");

    Selon la documentation PHP, on distingue les types de modes de fichiers suivants :

    1. r - ouvrir le fichier en lecture seule.
    2. r + - ouvre un fichier simultanément en lecture et en écriture.
    3. w - crée un nouveau fichier vide. Si au moment de l'appel un tel fichier existe déjà, alors il est détruit.
    4. w + - est similaire à r +, seulement si un tel fichier existe au moment de l'appel, son contenu est supprimé.
    5. a - s'ouvre fichier existant en écriture, tandis que le pointeur est déplacé sur le dernier octet du fichier (jusqu'à la fin du fichier).
    6. a + - ouvre un fichier en lecture et en écriture, tandis que le pointeur est déplacé sur le dernier octet du fichier (à la fin du fichier). Le contenu du fichier n'est pas supprimé.

    Remarque : il peut y avoir un autre paramètre facultatif à la fin de l'une des lignes : b ou t. Si b est spécifié, alors le fichier est ouvert en mode lecture/écriture binaire. Si t, alors le mode de traduction de saut de ligne est défini pour le fichier, c'est-à-dire il est perçu comme textuel.

    Pour une démonstration, envisagez le scénario suivant :

    // Ouvre le fichier dans différents modes
    $ fp = fopen ("counter.txt", "r"); // Mode binaire
    $ fp = fopen ("counter.txt", "rt"); // Mode texte
    $ fp = fopen ("http://www.yandex.ru", "r"); // Ouvre une connexion HTTP pour la lecture
    $ fp = fopen ("ftp : // utilisateur : [email protégé]"," w "); // Ouvrir la connexion FTP avec login et mot de passe
    ?>

    II... Manipulation de données de fichiers

    Vous pouvez écrire des données dans un fichier en utilisant PHP en utilisant la fonction fécrire ()... Cette fonction prend 2 paramètres obligatoires et 1 facultatif. Les paramètres requis sont le descripteur de fichier et le mode de fichier :

    $ fp = fopen ("counter.txt", "a"); // Ouvrir le fichier en écriture
    $ mytext = "Nous devons écrire cette ligne \ r \ n"; // Chaîne source
    $ test = fwrite ($ fp, $ montexte); // Écrire dans un fichier
    if ($ test) echo "Les données ont été saisies avec succès dans le fichier.";
    else echo "Erreur d'écriture dans le fichier.";
    fclose ($ fp); // Ferme le fichier
    ?>

    Pour lire le fichier ligne par ligne, utilisez la fonction fgets ()... La fonction prend 2 paramètres requis :


    si ($ fp)
    {
    tandis que (! feof ($ fp))
    {
    $ montexte = fgets ($ fp, 999);
    echo $ montexte. "
    ";
    }
    }

    fclose ($ fp);
    ?>

    Remarque : B cet exemple la valeur 999 détermine le nombre de caractères qui seront lus jusqu'à ce que le pointeur atteigne la fin du fichier (EOF).

    Pour lire le fichier dans son intégralité, vous devez utiliser la fonction fichier de lecture () qui prend 1 paramètre requis. La fonction ouvre un fichier, affiche son contenu dans une fenêtre de navigateur, puis ferme le fichier :

    echoreadfile ("counter.txt");
    ?>

    Vous pouvez également utiliser la fonction fpassthru () qui prend 1 paramètre requis. Avant d'utiliser cette fonction, vous devez ouvrir le fichier en mode lecture. Lorsque la lecture du fichier est terminée, la fonction ferme automatiquement le fichier (et le descripteur de fichier devient invalide).

    $ fp = fopen ("counter.txt", "r"); // Ouvrir le fichier en lecture
    if ($ fp) echo fpassthru ($ fp);
    elseecho "Erreur d'ouverture du fichier" ;
    ?>

    Très souvent, il y a des situations où il est nécessaire de lire le contenu du site dans un tableau. Cette fonctionnalité est fournie en utilisant la fonction déposer ()... Lorsque cette fonction est appelée, chaque ligne du fichier sera enregistrée dans un élément distinct du tableau spécifié.

    Remarque : n'utilisez pas la fonction déposer () aux fichiers binaires (binary-safe), car ce n'est pas sûr en termes de lecture de fichiers binaires, si, en même temps, un caractère de fin de fichier (EOF) est trouvé quelque part, cela ne vous garantit pas de lire l'intégralité du fichier binaire.

    $ file_array = fichier ("counter.txt"); // Lit le fichier dans $ file_array
    // Travailler avec des données de tableau
    ?>

    Remarque : Le travail avec des matrices est décrit en détail, auteurs : Mukhametshin D.F., Simdyanov I.V.

    À la fin de l'article, vous trouverez un bon "livre de recettes" pour les tableaux qui fournit une solution à de nombreux problèmes rencontrés quotidiennement par un programmeur Web.

    Imaginons une situation où un fichier doit être lu caractère par caractère. Pour cela, nous pouvons utiliser la fonction fgetc ()... La fonction prend un seul paramètre. La fonction est utile si nous avons besoin de trouver un caractère ou le nombre de caractères identiques.

    $ fp = fopen ("counter.txt", "r"); // Ouvrir le fichier en lecture
    si ($ fp)
    {
    tandis que (! feof ($ fp))
    {
    $ char = fgetc ($ fp);
    if ($ char == "c") $ i = $ i + 1; // Recherche le caractère "c"
    }
    echo "Nombre de lettres" c "dans le fichier :". $ i;
    }
    else echo "Erreur d'ouverture du fichier" ;
    ?>

    III... Fermeture du dossier

    Fermeture du fichier à l'aide de la fonction ffermer () qui prend 1 paramètre requis.

    $ fp = fopen ("counter.txt", "r");
    si ($ fp)
    {
    echo "Fichier ouvert" ;
    fclose ($ fp); // Ferme le fichier
    }
    ?>

    Recueil de recettes

    1) Nous devons vérifier si tel ou tel fichier existe. Pour ce faire, nous utiliserons la fonction le fichier existe ().

    monfichier ("compteur.txt"); // Utilise la fonction monfichier en passant le nom du fichier en argument

    fonction monfichier ($ nom) // Crée une fonction pour vérifier si un fichier existe
    {
    if (file_exists ($ name)) echo "Le fichier existe" ;

    }
    ?>

    Remarque : fonction le fichier existe ne vérifie pas les fichiers sur le serveur Web distant. Pour que la fonction fonctionne correctement, le fichier de script doit se trouver sur le serveur où se trouve le fichier en cours de vérification.

    2) Déterminer la taille du fichier à l'aide de la fonction taille du fichier()

    monfichier ("compteur.txt");

    fonction monfichier ($ nom) // Crée une fonction pour vérifier l'existence d'un fichier et déterminer la taille du fichier
    {
    if (file_exists ($ name)) echo "File size:" .filesize ($ name). "byte";
    else echo "Le fichier n'existe pas" ;
    }
    ?>

    3) Créer un fichier temporaire à l'aide d'une fonction fichier tmp()

    $ monfichier = tmpfile ();
    fwrite ($ monfichier, "Cette ligne est écrite dans un fichier temporaire."); // Écrire dans un fichier temporaire
    fseek ($ monfichier, 0); // Définir le pointeur de fichier
    echo fread ($ monfichier, 1024); // affiche le contenu du fichier
    ?>

    4) Vous devez définir le nombre de lignes dans le fichier. Pour cela, nous utilisons la fonction compter()

    $ fp = fichier ("counter.txt");
    echo "Nombre de lignes dans le fichier :" .count ($ fp);
    ?>

    5) Nous devons utiliser le mécanisme de verrouillage de fichier

    $ fp = fopen ("counter.txt", "a");
    troupeau ($ fp, LOCK_EX); // Verrouille le fichier en écriture
    fwrite ($ fp, "Chaîne à écrire");
    troupeau ($ fp, LOCK_UN); // Déverrouiller
    fclose ($ fp);
    ?>

    6) Nous devons supprimer une ligne spécifique du fichier

    $ num_stroka = 5 ; // Supprimer la ligne 5 du fichier
    $ fichier = fichier ("counter.txt"); // Lit le fichier entier dans un tableau

    pour ($ i = 0; $ i< sizeof($file); $i++)
    if ($ i == $ num_stroka) unset ($ file [$ i]);

    $ fp = fopen ("counter.txt", "w");
    fputs ($ fp, imploser ("", $ file));
    fclose ($ fp);
    ?>

    7) Détermination du type de fichier. On utilise la fonction

    2021 wisemotors.ru. Comment ça fonctionne. Le fer. Exploitation minière. Crypto-monnaie.