Enregistrer une variable dans un fichier php. Lire et écrire des fichiers

PHP - Travailler avec des fichiers

Chaque programmeur devrait être capable de travailler correctement avec des fichiers. Cet article est destiné à PHP débutants programmeurs, mais la « collection de recettes » sera également utile aux utilisateurs avancés.

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

  • Ouverture d'un fichier.
  • Manipulation de données.
  • Fermeture du dossier.

I. Ouverture d'un fichier

Pour ouvrir un fichier dans Environnement PHP La fonction fopen() est utilisée. Les paramètres requis pour cette fonction sont le nom du fichier et le mode du fichier.

Selon la documentation PHP, il existe les types suivants modes de fichier :

  • r – ouvre le fichier en lecture seule.
  • r+ - ouvre un fichier pour lire et écrire en même temps.
  • w – en créer un nouveau fichier vide. Si un tel fichier existe déjà au moment de l'appel, il est détruit.
  • w+ - similaire à r+, seulement si le fichier existe au moment de l'appel, son contenu est supprimé.
  • a – ouvre fichier existant en mode écriture, le pointeur est déplacé vers le dernier octet du fichier (jusqu'à la fin du fichier).
  • a+ - ouvre un fichier en mode lecture-écriture, avec le pointeur décalé sur le dernier octet du fichier (jusqu'à la fin du fichier). Le contenu du fichier n'est pas supprimé.

Remarque : à la fin de l'une des lignes, il peut y en avoir un autre Pas paramètre requis: b ou t. Si b est spécifié, 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 le démontrer, considérons le scénario suivant :

//Ouvre un 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"); //Ouvre une connexion FTP en indiquant le login et le mot de passe

?>

II. Manipulation des données de fichiers

Écrire les données dans un fichier lorsque Aide PHP peut être fait en utilisant la fonction fwrite(). Cette fonction prend 2 paramètres obligatoires et 1 optionnel. Les paramètres requis sont le descripteur de fichier et le mode de fichier :

$fp = fopen("counter.txt", "a"); // Ouvre le fichier en mode écriture

$mytext = "Nous devons écrire cette ligne\r\n"; // Chaîne source

$test = fwrite($fp, $montexte); // Écrit dans un fichier

Si ($test)

Echo "Les données ont été saisies avec succès dans le fichier.";

Autre

Echo "Erreur d'écriture dans le fichier.";

Ffermer($fp); //Ferme le fichier

?>

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

Si ($fp)

{

Pendant que (!feof($fp))

{

$montexte = fgets($fp, 999);

Faites écho à $montexte."
";

}

}

Autre

Ffermer($fp);

?>

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

Echo readfile("counter.txt");

?>

Vous pouvez également utiliser la fonction fpassthru() qui prend 1 paramètre obligatoire. Avant d'utiliser cette fonctionnalité, 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"); // Ouvre le fichier en mode lecture

Si ($fp)

Echo fpassthru($fp);

Autre

Echo "Erreur d'ouverture du fichier" ;

?>

Très souvent, il existe des situations où il est nécessaire de lire le contenu d'un site dans un tableau. Cette fonctionnalité implique l'utilisation de la fonction file(). Lorsque cette fonction est appelée, chaque ligne du fichier sera stockée dans élément séparé le tableau spécifié.

Remarque : ne doit pas être utilisé fonction de fichier() en fichiers binaires (binary-safe), car il n'est pas lu de manière sécurisée fichiers binaires, si en même temps il y a un caractère de fin de fichier (EOF) quelque part, cela ne garantit pas que vous lirez l'intégralité du fichier binaire.

$file_array = file("counter.txt"); // Lit le fichier dans $file_array

//

// Travailler avec des données de tableau

//

?>

Remarque : L'utilisation de tableaux est décrite en détail ici, auteurs : Mukhametshin D.F., Simdyanov I.V.

A la fin de l'article, vous trouverez un bon "livre de recettes" sur les tableaux, qui apporte des solutions à de nombreux problèmes qu'un programmeur web rencontre au quotidien.

Imaginons une situation où un fichier doit être lu caractère par caractère. Pour ce faire, 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"); // Ouvre le fichier en mode lecture

Si ($fp)

{

Pendant que(!feof($fp))

{

$char = fgetc($fp);

Si ($char == "c")

$i = $i + 1;// Trouver le symbole « c »

}

Echo "Nombre de lettres 'c' dans le fichier : ". $je;

}

Sinon, echo "Erreur d'ouverture du fichier" ;

?>

III. Fermer un dossier

Le fichier est fermé à l'aide de la fonction fclose(), qui prend 1 paramètre obligatoire.

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

Si ($fp)

{

Echo "Fichier ouvert" ;

Ffermer($fp); // Fermeture du fichier

}

?>

Recueil de recettes

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

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

function monfichier($name) //Créer une fonction pour vérifier l'existence d'un fichier

If (file_exists($name)) echo "Le fichier existe" ;

?>

Remarque : La fonction file_exists ne vérifie pas les fichiers serveur web distant. Pour bon fonctionnement fonctions, le fichier avec le script doit être situé sur le même serveur que le fichier en cours de vérification.

2) Déterminez la taille du fichier à l’aide de la fonction filesize()

monfichier("compteur.txt");

//Créer une fonction pour vérifier l'existence d'un fichier et déterminer la taille du fichier

fonction monfichier($nom)

If (file_exists($name)) echo "Taille du fichier : ".filesize($name)." octets" ;

Sinon echo "Le fichier n'existe pas" ;

?>

3) Création fichier temporaire en utilisant la fonction tmpfile()

$monfichier = tmpfile();

// Écrit dans un fichier temporaire

Fwrite($myfile, "Cette ligne est écrite dans un fichier temporaire.");

Fseek($monfichier, 0); // Définit le pointeur de fichier

Echo fread($monfichier, 1024); // affiche le contenu du fichier

?>

4) Vous devez déterminer le nombre de lignes dans le fichier. Pour ce faire, nous utilisons la fonction count()

$fp = fichier("compteur.txt");

Echo "Nombre de lignes dans le fichier : ".count($fp);

?>

5) Nous devons utiliser un mécanisme de verrouillage de fichiers

$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

Ffermer($fp);

?>

6) Nous devons supprimer une certaine ligne du fichier

$num_stroka = 5 ; // Supprime la ligne 5 du fichier

$file = file("compteur.txt"); // Lit le fichier entier dans un tableau

Pour ($i = 0; $i< sizeof($file); $i++)

Si($i == $num_stroka) unset($file[$i]);

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

Fputs($fp, implode("", $file));

Ffermer($fp);

?>

7) Détermination du type de fichier. Nous utilisons la fonction filetype(), qui prend un seul paramètre

$montype = filetype("counter.txt");

Echo "Type de fichier : ".$mytype;

?>

Après l'appel, la chaîne peut contenir l'une des valeurs suivantes :

fichier – fichier normal

rép – répertoire

fifo – canal fifo

block – périphérique orienté bloc

char – périphérique orienté caractère

inconnu type inconnu déposer

8) Si vous souhaitez visualiser tous les paramètres d'un fichier, vous devez utiliser la fonction stat()

$filename = stat("counter.txt");

Écho"

";

Print_r ($ nom de fichier);

Écho"

";

?>

9) Nous devons effacer le fichier, utilisez la fonction ftruncate()

$fp = fopen("counter.txt", "a"); //Ouvre le fichier en mode enregistrement

Ftruncate($fp, 0) // efface le fichier

?>

10) Nous devons connaître la date dernier changement fichier, utilisez la fonction filectime(). La fonction renvoie une valeur temporelle sous forme d'horodatage Unix.

Echo filectime("counter.txt");

En PHP, il faut souvent composer avec la création d'un fichier... c'est très simple : il n'y a pas de fichier sur le disque, le code a été exécuté et le fichier est apparu, puis vous pouvez lire ce fichier dans une autre variable ou même n'importe quelle page du Internet, puis écrivez quelque chose là-bas... mais pour cela, vous devez connaître des fonctions spéciales... plus à ce sujet dans cet article...

Pour créer un fichier en PHP dans un script exécutable, il suffit de préciser quelques fonctions :

Jetons un coup d'œil à un exemple :

$text = "Une sorte de texte à écrire dans le fichier";
$fp = fopen("file.txt", "w");
fwrite($fp, $text);
fclose($fp);
?>

Ici tu devrais savoir:

fopen()- la fonction ouvre le fichier en lecture ou écriture et clarifications ;

Cette précision (le paramètre mode de la fonction fopen) est très importante :

  • "r" - ouvrir un fichier en php Lire UNIQUEMENT. Le curseur est placé au début.
  • "r+" - ouvrir un fichier en php pour lire et écrire. Le curseur est placé au début. !!! - avec ces deux modes r et r+, les fichiers doivent déjà être créés (sinon une erreur apparaîtra Attention : fopen(file.txt) : échec de l'ouverture du flux : aucun fichier ou répertoire de ce type dans...), et nous ne faisons que lire ou nous avons la possibilité d'ajouter.
  • "w" - le fichier est ouvert UNIQUEMENT en écriture. Le fichier est tronqué à une longueur nulle, c'est-à-dire qu'il est écrasé. Ce qui est nécessaire est écrit et le curseur est placé au début.
  • "w+" - ouvre un fichier en écriture ET LECTURE ! Le reste est le même qu'en mode "w". !!! - dans ces deux modes - si le fichier n'a pas été créé - UNE TENTATIVE SERA FAITE POUR LE CRÉER !
  • "un" - ouvre le fichier UNIQUEMENT en écriture. Contrairement à "w", cette option n'écrase pas le contenu du fichier, mais place le curseur à la fin de la ligne et ajoute le contenu que nous voulions ajouter à la fin.
  • "un+" - ouvrez le fichier en écriture et en lecture.

fécrire($fp, $text) - une fonction d'écriture dans un fichier en PHP - c'est-à-dire que ce qui se trouve dans la variable $text est écrit dans un fichier qui se trouve dans la variable $fp ;

ffermer($fp) - fonction pour fermer le fichier que nous avons écrit dans la variable $fp ;

Vous pouvez désormais facilement créer correctement des fichiers en php, les ouvrir pour les lire et les éditer.

Ajouts et fonctions PHP utiles pour travailler avec un fichier ouvert :

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

ici la condition est remplie - "jusqu'à ce que la fin du fichier soit atteinte, faites ceci" pendant que(!feof($fp))

1. Fonction fgets($fp, 99) - vous permet de diviser tout le contenu en sections de 99 octets et plus loin, pour voir cela plus clairement, nous plaçons une balise

Cette fonction de chaîne fgets(descripteur de ressource [, int length]) accepte par défaut 1024 octets (1 kilo-octet) comme paramètre de longueur, s'il n'est pas spécifié, ce sera le cas. Ce paramètre est facultatif à partir de PHP 4.2.0 (Renvoie FALSE en cas d'erreur)

2. une. Fonction - entier lire le fichier(string filename [, bool use_include_path [, resource context]]) - lit le fichier dans son ensemble.

Lit un fichier et écrit le contenu dans le tampon de sortie. Et renvoie le nombre d'octets en sortie. En cas d'erreur, il reviendra si le chien n'est pas utilisé - @readfile.

Quelque chose comme ceci va se produire :


A la fin du mot il y a une étiquette
.

b. Fonction - tableau déposer(string filename [, int use_include_path [, resource context]]), fait la même chose que la fonction readfile, à une exception près, elle ajoute le contenu du fichier à un tableau :


De cette façon, vous pouvez lire n'importe quelle page sur Internet : $lines = file("http://site/"); et parcourez le tableau en utilisant la fonction foreach ;

3a. fonction de chaîne fichier_get_contents(string filename [, bool use_include_path [, resource context [, int offset [, int maxlen]]]] - vous permet d'obtenir le contenu sous la forme d'une seule chaîne.

C'est plus fonction universelle PHP pour lire un fichier, similaire à la fonction file, seul le contenu est renvoyé sous forme de chaîne, pas de tableau, et vous pouvez définir des conditions - par quel octet commencer - compenser et où finir - maxlen. En cas d'échec, il renverra FALSE.

Important!!!- dans ce cas, la fonction en remplace 3 d'un coup : fopen(), fread() et fclose() et supprime ainsi la marque.

3b. fonction int fichier_put_contents(string filename, Mixed data [, int flags [, Resource Context]]) - identique aux appels séquentiels aux fonctions fopen(), fwrite() et fclose() - renvoie le nombre d'octets écrits.

Dans lequel certaines informations seront écrites dans des fichiers. Par exemple, divers rapports, rapprochements, etc. C'est pratique parce que... Vous n’êtes pas obligé de toujours avoir sur vous les mots de passe du système de gestion de votre boutique en ligne, mais vous pouvez simplement déposer un fichier texte sur une clé USB.

Pour écrire et lire des fichiers, il existe la fonction fopen, regardons-la avec un exemple.

Écrire dans un fichier

$handle = fopen("1.txt", "w");

Ici nous ouvrons le fichier, le paramètre « w » indique que le fichier sera accessible en écriture. Nous écrivons l'identifiant de ressource du fichier dans la variable $handle pour un travail ultérieur avec celui-ci (par exemple, écriture ou lecture).

En plus de "w", il y a les paramètres suivants en php :

r- en lisant

w- enregistrer, si le fichier n'existe pas, alors il est créé, si le fichier existe, alors toutes les informations qu'il contient sont effacées

un- enregistrement supplémentaire, si le fichier n'existe pas, alors il est créé, si le fichier existe, alors les informations sont écrites jusqu'à la fin

Lecture à partir d'un fichier

Ajout d'un fichier

Fonction taille du fichier("1.txt")— nous comptons le nombre de caractères dans le fichier, c'est-à-dire que nous lisons le fichier entièrement.
Si vous précisez à la place taille du fichier("1.txt")- numéro 10, puis les 10 premiers caractères seront lus

Écrire un tableau dans un fichier

Parfois, vous devez écrire un tableau plutôt qu’une chaîne dans un fichier. Il existe une fonction de sérialisation/désérialisation à ces fins.

La fonction Serialize convertit un tableau en une chaîne que nous pouvons écrire dans un fichier. La fonction de désérialisation effectue l'opération inverse, convertissant une chaîne en tableau.
Voici un exemple :

Très souvent, les gens souhaitent commander une boutique en ligne dans laquelle certaines informations seront enregistrées dans des fichiers. Par exemple, divers rapports, rapprochements, etc. C'est pratique parce que... Vous n’êtes pas obligé de toujours avoir sur vous les mots de passe du système de gestion de votre boutique en ligne, mais vous pouvez simplement déposer un fichier texte sur une clé USB.

OX2 2014-10-03 2014-10-03

Ces deux méthodes sont très similaires, mais il existe une différence importante : vous devez disposer des autorisations en écriture pour écrire. Cela signifie qu'il doit se trouver dans un répertoire dans lequel vous disposez des droits nécessaires.

Si vous travaillez localement sur votre ordinateur, vous pouvez définir vous-même les droits : faites un clic droit sur le dossier et sélectionnez « Propriétés ».

Sur la plupart des hébergeurs Web, il n'existe généralement qu'un seul dossier doté d'autorisations d'écriture. Il est souvent appelé « cgi-bin », « log », « bases de données », etc. Si votre hébergeur le permet, vous pouvez définir vous-même les droits. Vous pouvez généralement cliquer avec le bouton droit sur un dossier de votre client FTP et sélectionner « propriétés » ou « autorisations » ou quelque chose de similaire. La capture d'écran ci-dessous montre à quoi cela ressemble dans FileZilla.

Consultez également les pages d'assistance de vos hébergeurs.

Veuillez noter que c'est le fichier texte qui doit se trouver dans le dossier avec les autorisations en écriture, et non le fichier PHP.

Ouvrir un fichier texte pour l'écriture

Comme pour la lecture d'un fichier texte, la fonction est utilisée lors de l'écriture, mais cette fois le mode est réglé sur "w" (écriture) ou "a" (ajout). Différence entre en écrivant Et ajout

dans la façon dont le "curseur" est placé - au début ou à la fin du fichier texte. Les exemples de ce didacticiel utilisent un fichier texte vide, textfile.txt. Mais vous pouvez créer le vôtre propre fichier

, si vous le souhaitez.

Essayons d'abord d'ouvrir ce fichier texte pour l'écrire : // Ouvrir un fichier texte// Ferme le fichier texte

ffermer($f);

?>

<span>Exemple 1 : écriture d'une chaîne dans un fichier texte</span> Essayons d'abord d'ouvrir ce fichier texte pour l'écrire : Pour écrire une chaîne il faut utiliser la fonction : Écrire dans un fichier texte$f = fopen("fichiertexte.txt", "w"); // Ouvrir un fichier texte// Écrit une chaîne de texte

fwrite($f, "PHP est amusant !"); enregistrements, la ligne est ajoutée au début du fichier et écrase la ligne existante. Si nous ouvrons un dossier pour Et, la ligne est ajoutée en bas du fichier, qui augmente d'une ligne à chaque écriture.

Exemple 2 : Ajout d'un bloc de texte à un fichier texte

Bien entendu, vous pouvez également ajouter un bloc de texte entier plutôt qu’une seule ligne :

<span>Exemple 1 : écriture d'une chaîne dans un fichier texte</span> Essayons d'abord d'ouvrir ce fichier texte pour l'écrire : Pour écrire une chaîne il faut utiliser la fonction : // Écrire du texte fwrite($f, $_POST["textblock"]); // Ouvrir un fichier texte ffermer($f); // Ouvre le fichier en lecture et lit la ligne $f = fopen("fichiertexte.txt", "r");// Lire le texte echo fgets($f);

ffermer($f);

?> Dans les leçons suivantes, nous examinerons une autre façon de stocker des données : les bases de données. Sous travailler avec des fichiers en PHP en écrivant implicite lecture à partir d'un fichierécrire dans un fichier diverses informations. Il est bien évident qu'il faut beaucoup travailler avec des fichiers, donc tout Programmeur PHP en écrivant doit être capable de.

lire à partir d'un fichier écrire dans un fichier Sous-séquence

  1. travailler avec des fichiers en PHP
  2. comme ça:
  3. Ouvrir le fichier.

Effectuez les actions nécessaires. Fermez le fichier..

Comme vous pouvez le voir, la séquence de travail avec des fichiers ressemble à celle de travailler avec des fichiers via un explorateur classique. Seulement ici, tout le travail est effectué automatiquement par nous-mêmes Script PHP Commençons par le premier point : ouvrir le fichier. Le fichier est ouvert avec Fonctions fopen(). Le premier paramètre est le chemin du fichier et le deuxième paramètre est

  1. un modificateur
  2. un+ un. Regardons immédiatement les modificateurs possibles :
  3. r- ouvre le fichier en écriture uniquement, avec le pointeur placé à la fin du fichier.
  4. r+, mais le fichier s'ouvre également en lecture. r- ouvre le fichier en lecture seule et le pointeur est placé au début du fichier.
  5. w- identique au modificateur
  6. w+, mais le fichier s'ouvre également en lecture. w, mais le fichier est également ouvert en écriture.

- ouvre le fichier en écriture uniquement, place le pointeur sur le début du fichier et efface tout le contenu du fichier. , seul le fichier est également ouvert en lecture. Il existe également deux modes de travail avec les fichiers : binaire(noté b Il existe également deux modes de travail avec les fichiers : ) Et texte t). Si vous travaillez régulièrement

fichier texte , puis sélectionnez le mode texte, et si, par exemple, avec une image, alors binaire..

Ce sont tous les modificateurs de base qui vous suffiront. Apprenons maintenant comment fermer un fichier. Ferme le fichier avec Fonctions fclose() Passons maintenant à la lecture du fichier en utilisant

Fonctions fread()
. Et laissez-moi enfin vous donner un exemple :
$contenu = "";
tandis que (!feof($handle))
?>

$contents .= fread($handle, 4096); fclose($poignée); Dans cet exemple, nous ouvrons d'abord le fichier pour le lire dans mode texte). (modificateur rt Fonction fopen(), avec lequel vous pouvez communiquer avec le fichier et l'écrire dans une variable poignée. Alors nous sommes dans une boucle alors que() jusqu'à ce que la fin du fichier soit atteinte, on lit le contenu à chaque fois 4096 caractères que nous écrivons dans la variable contenu. Une fois le processus de lecture terminé, fermez le fichier, à nouveau en utilisant le descripteur de fichier.

Passons maintenant à l'enregistrement en utilisant Fonctions fwrite():

$handle = fopen("files/a.txt", "at");
$string = "Ceci est du texte" ;
fwrite($handle, $string);
tandis que (!feof($handle))
?>

Après avoir exécuté ce script, dans le fichier a.txt la ligne " sera ajoutée C'est du texte".

Des lecteurs particulièrement attentifs ont prêté attention aux indications dont j'ai parlé juste au-dessus. Aiguille- c'est la position actuelle du "curseur" imaginaire dans le fichier. C'est ici que commence le travail avec le fichier. Vous pouvez modifier la position du pointeur en utilisant Fonctions fseek():

$handle = fopen("files/a.txt", "rt");
echo $contenu."
";
fseek($handle, 0, SEEK_SET);
$contents = fread($handle, 3);
echo $contenu."
";
?>

Nous lisons donc d'abord 3 symbole (en conséquence, situation actuelle le pointeur se déplace vers 3 postes). Nous plaçons ensuite le pointeur au début du fichier. Et nous lisons encore 3 symbole. Comme vous l’avez peut-être deviné, nous avons compté deux fois la même chose. C'est la première fois 3 symbole, puis je suis revenu et j'ai compté à nouveau 3 symbole. Aussi si vous Fonctions fseek() remplacer SEEK_SET sur SEEK_CUR, alors le deuxième paramètre ne définira pas la position du pointeur, mais la décalera par rapport à emplacement actuel. Je vous conseille même de vous entraîner avec des pointeurs, car ce n'est pas si simple à comprendre. Je recommande également d'essayer d'écrire quelque chose dans le fichier à la position du pointeur, par exemple au tout début du fichier. Et assurez-vous d’expliquer vos résultats.

Et enfin, je voudrais donner quelques fonctions supplémentaires qui vous permettent de travailler avec des fichiers en temps réel. niveau simple: fichier_put_contens() en écrivant fichier_get_contents(). Fonction fichier_put_contents()écrit dans un fichier, et la fonction fichier_get_contents() lit le contenu d'un fichier. Ces fonctions sont très simples à utiliser, mais il y a moins d'options (même si, en règle générale, elles ne sont pas nécessaires) :

file_put_contents("files/a.txt", "Ceci est le texte 2");
echo file_get_contents("files/a.txt");
?>

DANS ce scénario nous avons d'abord écrit la ligne " C'est le texte 2" dans un fichier, puis nous lisons le contenu résultant et le produisons. Comme vous pouvez le voir, il est difficile de trouver un moyen plus simple lecture à partir d'un fichier en écrivant implicite.

C'est tous les points principaux écrire dans un fichier.



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :