Php comment prononcer. Travailler avec des fichiers en php : ouverture, écriture, lecture. Méthodes fopen traditionnelles

Dernière mise à jour: 1.11.2015

Comme la plupart des langages de programmation, PHP prend en charge l'utilisation de fichiers, qui constituent l'un des moyens de stocker des informations.

Lire et écrire des fichiers

Ouverture et fermeture de fichiers

Pour ouvrir des fichiers en PHP, la fonction fopen() est définie. Il a la définition suivante : resource fopen(string $filename, string $mode) . Le premier paramètre $filename représente le chemin d'accès au fichier et le second est le mode d'ouverture. Selon le but de l'ouverture et le type de fichier, ce paramètre peut prendre les valeurs suivantes :

    "r" : Le fichier est ouvert en lecture seule. Si le fichier n'existe pas, renvoie false

    "r+" : Le fichier est ouvert en lecture seule et en écriture. Si le fichier n'existe pas, renvoie false

    "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 en lecture. 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, 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 sortie de la fonction fopen sera un descripteur de fichier. Ce handle est utilisé pour les opérations sur les fichiers et pour fermer le fichier.

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") permet au script d'arrêter son exécution et d'afficher un message d'erreur si la fonction fopen n'a pas pu ouvrir le fichier.

Lire un fichier

Vous pouvez utiliser plusieurs fonctions pour lire un 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 l'intégralité du fichier ligne par ligne :

Chaque fois que fgets() est appelé, PHP placera le pointeur à la fin de la ligne lue. Pour suivre la fin d'un fichier, la fonction feof() est utilisée, qui renvoie true lorsque le fichier est terminé. Et jusqu'à ce que la fin du fichier soit atteinte, on peut utiliser la fonction fgets().

Lecture de l'intégralité du dossier

Dans ce cas, nous n’avons pas besoin d’ouvrir explicitement le fichier, d’obtenir un handle, puis de fermer le fichier.

Bloquer la lecture

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 dans le fichier se déplace vers la fin de ce bloc. Et également en utilisant la fonction feof(), vous pouvez suivre l'achèvement d'un fichier.

Ecrire un fichier

Pour écrire un fichier, utilisez la fonction fwrite(), qui écrit la ligne suivante dans le fichier :

Une autre fonction fputs() fonctionne de manière similaire :

Travailler avec le pointeur de fichier

Lors de l'ouverture d'un fichier en lecture ou en écriture en mode "w", le pointeur dans le fichier est placé au début. Lors de la lecture Données PHP déplace le pointeur dans le fichier à la fin du bloc de données lu. Cependant, nous pouvons également manipuler manuellement le pointeur dans le fichier et le placer à un emplacement arbitraire. Pour ce faire, vous devez utiliser la fonction chercher, qui a la définition formelle suivante :

Int fseek (ressource $handle , int $offset [, int $whence = SEEK_SET ])

Le paramètre $handle représente un descripteur de fichier. Le paramètre $offset est le décalage en octets par rapport au début du fichier à partir duquel la lecture/écriture va commencer. 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 le décalage en octets de décalage par rapport au début du fichier

    SEEK_CUR : définit le décalage en octets de décalage par rapport au début de la position actuelle dans le fichier

    SEEK_END : définit le décalage pour décaler les octets à partir de la fin du fichier

Si le pointeur est installé avec succès, la fonction fseek() renvoie 0, et si le pointeur échoue, elle renvoie -1.

Exemple d'utilisation de la fonction :

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

À propos de l'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 fonctionnalités disponibles. PHP pourrait facilement adopter la devise du langage Perl, "Il existe plusieurs façons de faire quelque chose", surtout lorsque nous parlons de sur le traitement des fichiers. Mais avec la multitude d’outils disponibles, la question est de savoir lequel est le meilleur pour accomplir le travail. Bien sûr, la réponse à cette question dépend vraiment de vos objectifs lors du traitement du fichier, donc apprendre toutes les capacités du langage vaut la peine.

Méthodes fopen traditionnelles

Les méthodes fopen sont peut-être les plus familières aux programmeurs C et C++ d'autrefois, car ce sont plus ou moins les outils qui sont à votre portée depuis des années si vous avez travaillé avec ces langages de programmation. Pour chacune de ces méthodes, vous faites 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. Ouverture et lecture d'un fichier à l'aide de 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 aux programmeurs les plus 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 examiner chaque fonction de fichier utilisée ici.

fonction fopen

La fonction fopen établit une connexion à un fichier. Je dis « établit une connexion » car, en plus d'ouvrir un fichier, fopen peut aussi ouvrir une URL :

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

Cette ligne de programme crée un lien vers la page ci-dessus et vous permet de commencer à la lire sous forme de fichier local.

Note: L'option "r" utilisée dans fopen indique que le fichier est ouvert en lecture seule. Étant donné que l'écriture dans un fichier n'est pas incluse dans le cadre des problèmes abordés dans cet article, je ne listerai pas toutes les valeurs possibles du paramètre. Cependant, vous devez remplacer « r » par « rb » si vous lisez des fichiers binaires pour des raisons de compatibilité multiplateforme. Vous trouverez ci-dessous un exemple de ce type.

fonction feof

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

Fonction fclose

Sautons le milieu du listing 1 et allons à la fin ; fclose fait le contraire de fopen : il ferme la connexion au fichier ou à l'URL. Après avoir exécuté cette fonction, vous ne pourrez plus lire à partir du fichier ou du socket.

fonction fgets

En remontant quelques lignes dans le listing 1, vous arrivez au cœur du processus de traitement du fichier : la lecture réelle 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 afficher les données ou les traiter d'une autre manière. L'exemple du listing 1 imprime l'intégralité du fichier.

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

$string = fgets($file_handle, 81);

Pensez à "\0", l'indicateur de fin de ligne en C, et définissez la longueur sur un caractère plus long que ce dont vous avez réellement besoin. Comme vous pouvez le constater, l’exemple ci-dessus utilise 81 caractères, alors qu’il vous faut 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 ligne 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 d'un fichier ligne par ligne est dans la plupart des cas le plus logique. En fait, plusieurs autres fonctionnalités offrent des capacités similaires. Quoi qu’il en soit, l’analyse ligne par ligne n’est pas toujours ce dont vous avez besoin.

Et ici, nous accédons à fread . La fonction fread a un objectif légèrement différent de celui de fgets : elle est destinée à lire à partir de fichiers binaires (c'est-à-dire des fichiers qui ne sont pas initialement constitués de texte lisible par l'homme). Étant donné que le concept de « lignes » n'est pas pertinent pour les fichiers binaires (les structures de données logiques ne sont généralement pas divisé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 4 096 octets (4 Ko) de données. Notez que, quelle que soit la valeur que vous spécifiez, fread lira un maximum de 8 192 octets (8 Ko).

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

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

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

fonction fscanf

Pour en revenir au traitement des chaînes, fscanf est également le successeur de la fonction traditionnelle de bibliothèque de fichiers C. Si vous ne la connaissez pas, fscanf lit les champs de données dans les variables d'un fichier.

liste ($field1, $field2, $field3) = fscanf($fh, "%s %s %s");

Les chaînes de format utilisées dans cette fonction sont décrites dans de nombreuses sources telles que PHP.net, je ne répéterai donc pas ces informations ici. Il suffit de dire que le formatage des chaînes est très flexible. Il faut également mentionner que tous les champs sont placés dans la variable renvoyée par la fonction. (En C, ceux-ci seraient passés comme arguments.)

fonction fgetss

La fonction fgetss est différente des fonctions traditionnelles de manipulation de fichiers et vous permet de mieux comprendre les capacités de PHP. Cela fonctionne comme fgets, mais rejette tout ce qu'il trouve. Balises HTML ou PHP, ne laissant que le texte brut. Prenons le fichier HTML ci-dessous.

Listing 2. Exemple de fichier HTML
Mon titre

Si vous comprenez ce que signifie "Parce qu'il n'y a personne pour vous donner aucune douleur", alors vous écoutez trop le groupe America.



Passons-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 obtiendrez en sortie :

Mon titre Si vous comprenez ce que signifie "Parce qu'il n'y a personne pour vous donner aucune douleur" alors vous écoutez trop le groupe America.

fonction fpassthru

Quelle que soit la manière dont vous lisez les données d'un 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 afin que vous n'ayez pas à les mettre dans une variable.

Traitement de fichiers non linéaire : déplacement dans un fichier

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

fcherche($fh, 0);

L'exemple ci-dessus remonte au début du fichier. Si vous ne souhaitez pas aller au tout début du fichier - disons, un kilo-octet suffit - vous écrivez simplement :

fcherche($fh, 1024);

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

fseek($fh, 100, SEEK_CUR);

De même, reculer de 100 octets se fait par :

fseek($fh, -100, SEEK_CUR);

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

fseek($fh, -100, SEEK_END);

Une fois la nouvelle position atteinte, vous pouvez utiliser fgets, fscanf ou une autre fonction pour lire les données.

Note: vous ne pouvez pas utiliser fseek sur les descripteurs de fichiers faisant référence à une URL.

Capturer un fichier entier

Passons maintenant à certaines des capacités uniques de traitement de fichiers de PHP : traiter de gros blocs de données sur une ou deux lignes. Par exemple, comment pouvez-vous récupérer un fichier et afficher l’intégralité de son contenu sur votre page Web ? Eh bien, vous avez vu un exemple d'utilisation d'une boucle avec fgets. Mais comment rendre les choses plus faciles ? Le processus est presque ridiculement simple en utilisant fgetcontents, qui met le fichier entier sur une ligne.

$mon_fichier = file_get_contents("monnom de fichier"); echo $mon_fichier ;

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

echo file_get_contents("monnom de fichier");

Cet article se concentre principalement sur le traitement des fichiers locaux. Toutefois, 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 regardez peut-être ces exemples et pensez : « Cela représente beaucoup de travail ». Les développeurs PHP sont d'accord avec vous. Vous pouvez donc raccourcir la commande ci-dessus en :

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

La fonction readfile affiche l'intégralité du contenu d'un fichier ou d'une page Web dans le tampon de sortie par défaut. 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 longue. Vous souhaiterez peut-être d’abord le diviser en parties à l’aide de la fonction split().

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

Mais pourquoi avez-vous besoin de toute cette complexité s’il existe une fonction parfaitement adaptée qui fera le travail à votre place ? La fonction PHP file() accomplit cette tâche en une seule étape : elle renvoie un tableau de chaînes dont les éléments sont les lignes 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 nouvelles lignes, tandis que la commande file termine les lignes du tableau par des nouvelles lignes (tout comme fgets).

Les capacités de PHP vont cependant bien au-delà de celles décrites ci-dessus. Vous pouvez analyser des fichiers .ini entiers dans le style PHP avec une seule commande parse_ini_file. La commande parse_ini_file s'applique aux fichiers similaires à ceux présentés dans le listing 4.

Listing 4. Exemple de fichier .ini
; Nom du commentaire = Quête "Roi Arthur" = Pour 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 le tableau :

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

Le résultat sera le résultat suivant :

Listing 5. Sortie
Array ( => Roi Arthur => Pour chercher le Saint Graal => Bleu => Mark Twain => Whoopi Goldberg)

Bien sûr, vous remarquerez peut-être que cette commande sections fusionnées. Il s'agit de l'action par défaut, mais vous pouvez facilement la personnaliser 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 résultat ressemblera à :

Listing 6. Sortie
Array ( => Array ( => Roi Arthur => Pour chercher le Saint Graal => Bleu) => Array ( => Mark Twain => Whoopi Goldberg))

PHP place les données dans un tableau multidimensionnel facilement analysable.

Mais ce n’est que la pointe de l’iceberg en matière de traitement de fichiers en PHP. Des fonctions plus complexes telles que Tidy_parse_file et xml_parse peuvent vous aider à analyser respectivement les documents HTML et XML. Référez-vous à la section pour en savoir plus des informations détaillées sur le fonctionnement de ces fonctions. Les deux valent la peine d'être pris en compte si vous travaillez avec ces types de fichiers, mais au lieu d'examiner tous les types de fichiers possibles, vous souhaiterez peut-être examiner de plus près le contenu de cet article, où il existe plusieurs bons règles générales pour travailler avec les fonctions que j'ai décrites jusqu'à présent.

Bon style de programmation

Ne présumez jamais que tout dans votre programme fonctionnera comme prévu. Par exemple : que se passe-t-il si le fichier que vous recherchez a été déplacé ? Que se passe-t-il si une modification d'autorisation vous empêche de lire le contenu d'un fichier ? Vous pouvez vérifier l'existence d'un fichier et les droits de lecture à l'avance en utilisant les méthodes file_exists et is_readable.

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

Cependant, dans la pratique, ce programme sera probablement 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")) ( # Traitement fclose($fh); )

Puisque fopen renvoie False en cas d'échec, cela garantira que le fichier ne sera traité que s'il peut être ouvert. Bien entendu, si le fichier n’existe pas ou est illisible, vous vous attendez à ce que la valeur de retour soit négative. Par conséquent, un tel contrôle est un piège dans lequel tombent tous les problèmes potentiels. Alternativement, vous pouvez quitter le programme ou afficher un message d'erreur si le fichier ne peut pas être ouvert.

Comme fopen, les fonctions 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 si une erreur se produit. Bien sûr, à l’exception de fclose , vous avez probablement déjà traité les résultats renvoyés. Quant à 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 lecture et analyse de 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 c'est ce dont vous avez besoin pour faire le travail. Le choix dépend vraiment de ce que vous essayez d’accomplir.

Si vous traitez de grandes quantités de données, vous trouverez probablement fscanf plus utile et efficace que, par exemple, l'utilisation de file en combinaison avec les commandes split et sprintf suivantes. Si vous affichez simplement une grande quantité de texte avec des modifications mineures, l'utilisation des fonctions file , file_get_contents ou readfile peut être plus logique. Cette solution sera probablement correcte si en utilisant PHP pour la mise en cache ou même la création d'un serveur proxy temporaire.

PHP fournit de nombreux outils pour travailler avec des fichiers. Apprenez à mieux les connaître et découvrez quels outils conviennent le mieux au projet sur lequel vous travaillez. Un large choix vous est proposé logiciel, utilisez-les le plus efficacement possible et amusez-vous à traiter vos fichiers avec PHP.

PHP est apparu bien plus tard que les langages de programmation ont renforcé leurs positions et formulé des idées générales sur la syntaxe, la logique, les variables et autres objets du programme. Les fichiers et les fonctions permettant de travailler avec eux n'ont pas progressé, et même le problème du codage des fichiers, survenu pour des raisons naturelles, n'a pas conduit à des solutions radicalement nouvelles.

Remarques générales

Le travail principal avec les fichiers, quels qu'ils soient, consiste à ouvrir, lire/écrire et fermer. Vous pouvez utiliser les fonctions de blocage/déblocage de l'accès à un fichier pendant son traitement, vous pouvez définir la position de lecture/écriture dans le fichier - tout est comme avant, dans un passé lointain.

Un point important en PHP est l'abondance de fonctions pour travailler avec des fichiers et des options pour les utiliser. En pratique, il suffit d'utiliser des options simples mais efficaces. Un fichier est avant tout une mémoire de programme. Vous pouvez y stocker des informations. Le but de tout programme, le but de tout site Web est de présenter, traiter et assurer la sécurité des informations.

Circonstance essentielle

Auparavant, l’exigence de compatibilité, au moins de bas en haut, était inébranlable. Autrement dit, un programme une fois écrit dans une version d’un langage de programmation est idéalement compilé/interprété dans la version suivante. Dans la programmation moderne, ce n'est pas le cas. L'exigence de compatibilité des structures syntaxiques d'un langage est devenue une chose de l'histoire, et la lutte entre les styles, les outils de programmation et les versions de certains outils est devenue la norme de leur vie.

Travailler avec des fichiers, ainsi qu'avec des bases de données, est aussi important que l'interface du site. Le premier doit être construit de telle manière que lors d'un changement de plate-forme, d'hébergement ou de version linguistique, il n'est pas nécessaire de modifier le code du site. L'interface permettant de travailler avec des fichiers doit être incluse dans un script séparé et garantir une compatibilité totale, tout comme la conception du site doit s'adapter de manière adéquate à n'importe quel appareil, navigateur et fournir au reste des fonctionnalités du site les mêmes capacités.

Lisez et changez-vous

Un programme peut-il se modifier lui-même, c'est-à-dire qu'un script peut-il s'améliorer ? À ce jour, cette question intéresse beaucoup. Mais la tâche semble bien plus pratique : PHP lit un fichier PHP. Un développeur ne peut pas toujours résoudre un problème particulier en écrivant du code spécifique. Parfois, il est nécessaire de le modifier lorsqu'un visiteur vient sur le site et formule une question qui n'était pas prévue au stade du développement.

Comme dans tous les autres cas, vous devez d’abord ouvrir le fichier. Peu importe que ce fichier existe ou non. Si l'on sait que le fichier existe (la fonction file_exists() donne une réponse positive), la fonction fopen() est utilisée avec les accès 'r', 'r+', 'a', 'a+'. Si le fichier n'existe pas encore, alors avec l'accès 'a', 'a+', 'w', 'w+'. Le résultat de l'ouverture d'un fichier sera son descripteur. Le fichier est fermé avec la fonction fclose().

Il est pratique d'utiliser PHP pour lire un fichier dans un tableau lorsqu'il n'est pas nécessaire de le traiter au moment de la lecture.

if (file_exists($fName)) (

$aLines = fichier($fName)

Dans cette option, chaque ligne du fichier entre séquentiellement dans l’élément du tableau. Il est à noter que les fonctions file() ou file_get_contents() n'ont pas besoin d'ouvrir le fichier et de le fermer.

Lorsque le fichier d'entrée est trop volumineux et que vous avez besoin de trouver juste quelques informations, ou pour d'autres raisons, vous pouvez utiliser PHP pour lire le fichier ligne par ligne. PHP offre la possibilité de le faire avec les fonctions fgets() et fgetc().

$fvs = fopen($fNom, "r")

while ((false !== ($cLine = fgets($fvs, 2000)))) (

$cLignes .= "
" . $i . "). " . $cLigne

Les deux options fonctionnent parfaitement. Cependant, lors de la lecture PHP d'un fichier PHP pour une modification ultérieure, des précautions doivent être prises. Il n'est pas toujours possible de prévoir comment un visiteur l'utilisera au stade du développement du site. Il est préférable que les scripts soient modifiés dans le cadre des fonctions du site et que le contrôle de cette modification ne soit pas disponible pour le visiteur, y compris l'administrateur des ressources.

Sauvegarde des résultats

Les informations reçues et mises à jour sont écrites dans le fichier par la fonction fputs() ligne par ligne ou par la fonction file_put_contents() dans son ensemble.

$fName = $_SERVER["DOCUMENT_ROOT"] . "/tmp/scData.php"

$fvs = fopen($fNom, "a")

troupeau ($fvs, LOCK_EX)

$cLigne = "1 ligne". chr(10)

fputs($fvs, $cLine)

$cLine = "2 lignes" . chr(10)

fputs($fvs, $cLine)

troupeau ($fvs, LOCK_UN)

Dans l'option d'enregistrement ligne par ligne, vous pouvez manipuler les données pendant le processus d'enregistrement ; dans le second cas, la chaîne ou le tableau écrit est placé dans l'intégralité du fichier.

$fichier = " scData.php "

$cContents = file_get_contents($fichier)

// ajout d'une entrée

$cContents .= "nouvelle entrée\n"

// réécrit le fichier

file_put_contents($fichier, $cContents)

Lire et écrire des fichiers PHP est simple et naturel. Cependant, il est important de garder à l’esprit : chaque fichier a un nom, une extension et un chemin (dossier). Pour qu'un script PHP puisse lire et écrire des fichiers, il doit disposer des droits appropriés. Ils sont automatiquement exposés sur l'hébergement, mais dans certains cas, ils doivent être étendus.

Dans certains cas, il peut être souhaitable de vérifier les résultats en effectuant une lecture test. L'écriture de fichiers PHP nécessite cela lors du développement, mais dans certains cas, dans l'intérêt de la sécurité ou de la fiabilité du site, la vérification de l'enregistrement des données est indispensable.

Une caractéristique caractéristique de PHP, MySQL, JavaScript et surtout des navigateurs : permettre silencieusement que certaines erreurs se produisent. « Pas reconnu, pas fait » - ce n'est pas une très bonne pratique de première ligne. technologies de l'information, mais cela apprend aux développeurs à ne pas faire d'erreurs et à écrire du code propre et de haute qualité, ce qui n'est pas mal non plus.

PHP et travailler avec de vrais documents

PHP lire un fichier PHP présente certes un intérêt pratique, mais cela relève du domaine de la programmation. L'utilisateur et le visiteur du site sont intéressés par les informations à caractère appliqué, qu'il a l'habitude de voir sous forme de tableaux et de documents, notamment aux formats de fichiers *.xlsx et *.docx. Il s'agit de fichiers au format MS Excel et MS Word.

Les listes de produits, de prix, de caractéristiques sont généralement constituées sous forme de tableaux, la lecture PHP du fichier Excel est donc indispensable.

Les bibliothèques PHPExcel et PHPWord ont été développées pour fonctionner avec de tels fichiers. Cependant, le contenu des fichiers *.xlsx et *.docx est présenté dans la norme OOXML, c'est-à-dire que le document réel et compréhensible est présenté dans une archive zip. Une archive Zip est un ensemble de fichiers comprenant des images, des objets, des formules et des insertions provenant d'autres programmes. Les fichiers texte sont ici représentés par des descriptions sous forme de balises. La lecture d'un tel fichier ne suffit pas ; vous devez l'analyser pour obtenir le contenu et la structure à utiliser et à modifier.

Cela signifie que l'opération de lecture se transforme en procédure d'ouverture d'archive. Ces bibliothèques ouvrent les archives de documents de manière indépendante et offrent au développeur des fonctions étendues pour lire, traiter et écrire de tels documents.

Tableaux Excel

include_once 'PhpOffice/PhpExcel/IOFactory.php'

fonction scGetExcelFile($xls)(

$objPHPExcel = PHPExcel_IOFactory::load($xls)

$objPHPExcel->setActiveSheetIndex(0)

//ce tableau contient des tableaux de chaînes

$aSheet = $objPHPExcel->getActiveSheet()

$tableau = tableau()

//traitement

foreach($aSheet->getRowIterator() comme $row)(

$cellIterator = $row->getCellIterator()

foreach($cellIterator comme $cell)(

array_push($item, iconv("utf-8", "cp1251", $cell->getCalculatedValue()))

array_push($tableau, $item)

La lecture et le traitement de fichiers Excel sont beaucoup plus difficiles à traiter Documents Word. La meilleure option, si vous avez besoin de mettre en œuvre un projet sérieux de lecture et de traitement d'informations appliquées, est de maîtriser d'abord la bibliothèque PHPWord. Cela vous donnera une bonne expérience et une compréhension rapide des spécificités du problème.

Documents Word

Juste deux lignes :

$oWord = nouveau \PhpOffice\PhpWord\PhpWord()

$oDocx = $this->oWord->loadTemplate($cFileName)

Le document $cFileName est désormais disponible pour le traitement. Ensuite, l'archive est ouverte, son contenu est sélectionné et analysé, qui peut être affiché sur le site Web, modifié et réécrit.

$zipClass = nouveau ZipArchive()

$zipClass->open($this->tempFileName)

// lit tout le contenu du document

pour ($i=0; $i<$zipClass->numFichiers ; $i++) (

$cNameIn = $zipClass->getNameIndex($i)

$cNameInExt = substr($cNameIn, -4)

if (($cNameInExt == ".xml") || ($cNameInExt == "rels")) (

// les fichiers avec les extensions ".xml" et ".xml.rels" sont enregistrés dans la table des documents

// chaque ligne XML est écrite avec un numéro unique dans l'ordre

$cBodyIn = $zipClass->getFromName($cNameIn)

$cBodyInLen = strlen($cBodyIn)

// tous les autres fichiers sont écrits tels quels dans le dossier de documents

$cNameOnly = substr($cNameIn, strrpos($cNameIn, "/") + 1)

$zipClass->getFromName($cNameIn, $cWorkPath); // contenu sous forme de fichier

Les opportunités qui s'ouvrent lorsque Aide PHP Excel et PHP Word vous permettent de manipuler de vrais documents et de rendre leur contenu pertinent à tout moment. Dans le monde dynamique d’aujourd’hui, cela devient très important. Le centre de gravité a depuis longtemps quitté l'usage local équipement informatique dans l'espace Internet virtuel. Par conséquent, créer des tableaux et des documents dans des produits Microsoft locaux est moins efficace que travailler avec de tels documents en mode automatique et semi-automatique sur un site Web, accessible non seulement au créateur du tableau ou du document, mais également à ses consommateurs.

Les fichiers texte, une autre vie

En première approximation, les fichiers texte sont plus simples que les fichiers PHP ou les documents d'application. Cependant, il y a quelque chose à penser ici. Les opérations de lecture/écriture de tels fichiers sont déjà indiquées ci-dessus, mais la signification de ces fichiers est bien plus importante.

Puisqu'il existe un client et un serveur (le premier est dominé par JavaScript, le second par PHP), alors même les mécanismes de cookies et de sessions ne peuvent pas faire face à la nécessité de transférer des informations entre des scripts, des pages ou certains processus.

Il est possible de refléter les changements souhaités dans la base de données, mais malgré tous leurs avantages et leur rapidité, les petits fichiers texte temporaires ou permanents peuvent être une option beaucoup plus intéressante pour transmettre des informations. Si vous ne créez pas beaucoup de petits fichiers et ne contrôlez pas leur taille, ils peuvent constituer une version spécifique et plus flexible d'une base de données.

PHP lit un fichier texte est rapide, il peut être immédiatement analysé en une structure, un tableau ou un objet. Cette dernière est très importante, car elle permet de créer des objets qui vivent en dehors du temps imparti. Script PHP, qui, comme vous le savez, ne peut exister que sur le serveur et ce n'est qu'au moment du chargement de la page qu'une réponse AJAX est générée, ou pour une autre raison qui provoque le lancement de l'interpréteur PHP.

Si vous pensez au fait qu'un fichier texte est le contenu et la structure du développeur, un fichier PHP est la syntaxe de l'interpréteur plus la logique du développeur, et les descriptions « taguées » html, css, xml sont des éléments plus sémantiques, mais réglementés. par des normes statiques. On peut en conclure qu'il est probablement temps pour les fichiers d'acquérir un nouveau contenu, et cela devrait déterminer leur qualité et leur logique d'utilisation. C'est précisément parce que la programmation n'est pas encore prête pour la prochaine étape de son développement que les fichiers restent aujourd'hui de simples fichiers que le développeur crée et détermine son utilisation.

La chose la plus intéressante et la plus prometteuse est lorsque PHP lit un fichier PHP de manière indépendante lorsque le besoin s'en fait sentir. Et une simple lecture PHP d'une ligne d'un fichier entraîne la création d'un objet, du moins dans l'état dans lequel il a été enregistré. Ce ne sont pas des idées tout à fait familières, mais dans le monde moderne, tout change si vite.

16,5K

En fait, comment ouvrir un fichier php n’est pas un gros problème. Il peut être plus difficile d’ouvrir une bouteille de bière lorsque l’on est au milieu d’une forêt. Mais seuls les programmeurs passionnés pensent ainsi. Et pour les débutants, nous vous parlerons de toutes les capacité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. Autrement dit, il fonctionne côté serveur. Par conséquent, pour déboguer son code, un serveur local doit être installé sur la machine client.

Pour travailler avec des fichiers php, des applications spéciales sont utilisées - des éditeurs de logiciels. Les plus courants sont :

  • Tisseur de rêves.
  • PHPModifier.
  • Développement PHP Eclipse.
Lors de la création de sites Web basés sur PHP, vous devrez peut-être réutiliser le code du programme. Dans de telles situations, il est pratique de connecter des solutions prêtes à l'emploi situées dans un autre fichier. La construction include est utilisée pour cela. Sa syntaxe est :

inclure le nom du fichier

Exemple de connexion :

Fichier inclus :


L'inclusion d'un fichier est également possible en utilisant la construction require. Contrairement à include, il inclut le fichier avant que le code du programme ne soit exécuté. En utilisant require dans le code, un seul appel à ce fichier est possible. Lors d'un nouvel accès, le système affichera un message d'erreur global et arrêtera l'exécution du programme.

La construction include inclut uniquement la source 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 avec les fichiers s'effectuent en plusieurs étapes :

  • Ouverture d'un fichier ;
  • Édition de contenu ;
  • Fermeture du dossier.

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

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

Arguments acceptés :

  • chaîne filename – nom du fichier ou chemin absolu vers celui-ci. Si le chemin d'accès au fichier n'est pas précisé, 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 placé au début ;
  • r+ – le fichier est ouvert en lecture et en écriture ;
  • w – crée un nouveau fichier en écriture uniquement. Si un fichier du même nom existe déjà, toutes les données qu'il contient sont automatiquement supprimées ;
  • w+ - crée un nouveau fichier pour l'écriture et la lecture. Lorsqu'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 placé à la fin. C'est-à-dire que l'écriture dans le fichier php ne commencera pas par le début, mais par la fin ;
  • a+ – ouvre un fichier en mode lecture-écriture. L'enregistrement commencera à la fin ;
  • b – mode de travail avec un fichier contenant des données binaires (dans le système de nombres binaires). Ce mode est uniquement disponible dans système opérateur Les fenêtres.

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

int fclose (int file) , où int file est un handle vers le 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 de la capacité du serveur.

Exemple:

Lire et écrire des fichiers

Pour afficher simplement tout le contenu d’un fichier, la fonction readfile() est idéale. Sa syntaxe est :

readfile (string filename) , où string filename est le nom du fichier de chaîne (pas un handle).


Le même fichier peut être lu en utilisant la fonction fpassthru(). Il lit les données depuis la position du pointeur de fin jusqu'à 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 length . Exemple:

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

Pour écrire des données texte dans un fichier, il existe deux fonctions identiques :

  • int fputs (fichier int, chaîne chaîne [, longueur int])
  • int fwrite (fichier int, chaîne chaîne [, longueur int])

Les fonctions écrivent dans un fichier int file une chaîne de caractères de la longueur spécifiée int length ( argument facultatif). 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 touch(). Il définit l'heure de modification du fichier. S'il n'existe aucun élément portant le nom recherché, il sera créé. Sa syntaxe.




Haut