Académique Documents
Professionnel Documents
Culture Documents
Dans cette nouvelle leçon, nous allons apprendre à créer un fichier et à écrire
dans un fichier vierge ou contenant déjà du texte.
Les deux façons les plus simples vont être d’utiliser soit la fonction
file_put_contents(), soit les fonctions fopen() et fwrite() ensemble.
Notez déjà que l’utilisation des fonctions fopen() et fwrite() va nous donner
plus de contrôle sur notre écriture, en nous permettant de choisir un mode
d’ouverture, d’écrire à un endroit du fichier, etc.
Si le fichier spécifié dans le chemin du fichier n’existe pas, alors il sera créé. S’il
existe, il sera par défaut écrasé, ce qui signifie que ses données seront
supprimées.
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>Cours PHP & MySQL</title>
5. <meta charset="utf-8">
6. <link rel="stylesheet" href="cours.css">
7. </head>
8.
9. <body>
10. <h1>Titre principal</h1>
11. <?php
12. file_put_contents('exemple.txt', 'Ecriture dans
un fichier');
13. ?>
14. <p>Un paragraphe</p>
15. </body>
16. </html>
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>Cours PHP & MySQL</title>
5. <meta charset="utf-8">
6. <link rel="stylesheet" href="cours.css">
7. </head>
8.
9. <body>
10. <h1>Titre principal</h1>
11. <?php
12. file_put_contents('exemple.txt', 'Ecriture dans
un fichier');
13. file_put_contents('exemple.txt', '**NOUVEAU
TEXTE**');
14. ?>
15. <p>Un paragraphe</p>
16. </body>
17. </html>
Pour « ajouter » du texte à notre fichier, une astuce simple consiste ici à
récupérer le texte d’origine de notre fichier dans une variable, puis à le
concaténer avec le texte qu’on souhaite écrire dans notre fichier, puis à passer
le nouveau texte à file_put_contents(). L’ancien contenu du fichier sera alors
remplacé par le nouveau comme précédemment.
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>Cours PHP & MySQL</title>
5. <meta charset="utf-8">
6. <link rel="stylesheet" href="cours.css">
7. </head>
8.
9. <body>
10. <h1>Titre principal</h1>
11. <?php
12. //On écrit un premier texte dans notre fichier
13. file_put_contents('exemple.txt', 'Ecriture dans
un fichier');
14.
15. //On récupère le contenu du fichier
16. $texte = file_get_contents('exemple.txt');
17.
18. //On ajoute notre nouveau texte à l'ancien
19. $texte .= "\n**NOUVEAU TEXTE**";
20.
21. //On écrit tout le texte dans notre fichier
22. file_put_contents('exemple.txt', $texte);
23. ?>
24. <p>Un paragraphe</p>
25. </body>
26. </html>
Ici, vous pouvez noter que j’utilise le caractère \n. Celui-ci sert à créer un
retour à la ligne en PHP. Ici, on l’utilise donc que notre nouveau texte soit
inséré dans la ligne suivante de notre fichier. On est obligés d’utiliser des
guillemets plutôt que des apostrophes ici pour que le \n soit bien interprété
comme un retour à la ligne par le PHP.
Cette astuce pour rajouter du texte dans un fichier fonctionne mais nous force
finalement à faire plusieurs opérations et à écraser le contenu de base du
fichier pour placer le nouveau (qui contient le contenu original).
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>Cours PHP & MySQL</title>
5. <meta charset="utf-8">
6. <link rel="stylesheet" href="cours.css">
7. </head>
8.
9. <body>
10. <h1>Titre principal</h1>
11. <?php
12. //On écrit un premier texte dans notre fichier
13. file_put_contents('exemple.txt', 'Ecriture dans
un fichier');
14.
15. //On rajoute du texte dans notre fichier
16. file_put_contents('exemple.txt', "\n**NOUVEAU
TEXTE**", FILE_APPEND);
17. ?>
18. <p>Un paragraphe</p>
19. </body>
20. </html>
Pour créer un fichier avec fopen(), nous allons devoir lui passer en arguments
un nom de fichier qui sera le nom du fichier créé ainsi qu’un mode d’ouverture
adapté. En mentionnant simplement cela, le fichier sera par défaut créé dans
le même dossier que notre page PHP.
Ici, nous créons un nouveau fichier avec le mode c+. Le fichier est donc
accessible en lecture et en écriture et si celui-ci existait et contenait déjà des
informations, celles-ci ne seraient pas effacées à la différence du mode w+.
Une fois cela fait, vous pouvez aller vérifier dans le dossier contenant votre
page PHP qu’un fichier nommé exemple2.txt a bien été créé.
Cette fonction va prendre la valeur retournée par fopen() ainsi que la chaine de
caractères à écrire dans le fichier en arguments.
Si notre fichier est vide, on va très simplement pouvoir écrire du texte dedans :
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>Cours PHP & MySQL</title>
5. <meta charset="utf-8">
6. <link rel="stylesheet" href="cours.css">
7. </head>
8.
9. <body>
10. <h1>Titre principal</h1>
11. <?php
12. $fichier = fopen('exemple2.txt', 'c+b');
13. fwrite($fichier, 'Un premier texte dans mon
fichier');
14. ?>
15. <p>Un paragraphe</p>
16. </body>
17. </html>
Dans le cas où le fichier ouvert contient déjà du texte, cela va être un peu plus
complexe. En effet, il va déjà falloir se poser la question d’où se situe notre
pointeur.
Ici, notre fichier contient le texte « Un premier texte dans mon fichier. Un autre
texte » lors de son ouverture. Lors du premier appel à fwrite(), le curseur se
situe au début du fichier. Les informations « abc » vont alors être écrites par-
dessus celles déjà présentes.
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>Cours PHP & MySQL</title>
5. <meta charset="utf-8">
6. <link rel="stylesheet" href="cours.css">
7. </head>
8.
9. <body>
10. <h1>Titre principal</h1>
11. <?php
12. /*Notre fichier contient toujours le texte :
13. *"abcdefmier texte dans mon fichier. Un autre
texte"
14. *ajouté précédemment*/
15. $fichier = fopen('exemple2.txt', 'c+b');
16. fwrite($fichier, 'abc');
17. fwrite($fichier, 'def');
18.
19. //On déplace le curseur de 20 octets
20. fseek($fichier, 20, SEEK_CUR);
21. fwrite($fichier, 'ghijk');
22.
23. //On place le curseur en fin de fichier
24. fseek($fichier, filesize('exemple2.txt'));
25. fwrite($fichier, 'lmnop');
26. ?>
27. <p>Un paragraphe</p>
28. </body>
29. </html>
1. <!DOCTYPE html>
2. <html>
3. <head>
4. <title>Cours PHP & MySQL</title>
5. <meta charset="utf-8">
6. <link rel="stylesheet" href="cours.css">
7. </head>
8.
9. <body>
10. <h1>Titre principal</h1>
11. <?php
12. /*On appelle fopen() avec le mode c : le
pointeur se situe
13. *au début du fichier. Le fichier contient le
texte :
14. *"abcdefmier texte dans mon ghijker. Un autre
textelmnop"*/
15. $fichier = fopen('exemple2.txt', 'c+b');
16.
17. /*On lit les 20 premiers octets du fichier avec
fread(), le
18. *pointeur se situe là où fread() arrête sa
lecture*/
19. $texte = fread($fichier, 20);
20.
21. //On ajoute du texte dans notre variable
22. $texte .= ' TEXTE AJOUTE AU MILIEU ';
23.
24. /*On lit la suite du fichier (fread() reprend
sa lecture là où se
25. *trouve le pointeur) et on ajoute le texte lu
dans $texte*/
26. $texte .= fread($fichier,
filesize('exemple2.txt'));
27.
28. /*On replace le pointeur en début de fichier et
on écrase l'ancien
29. *texte avec le nouveau (qui est plus long)*/
30. fseek($fichier, 0);
31. fwrite($fichier, $texte);
32. ?>
33. <p>Un paragraphe</p>
34. </body>
35. </html>
Précédent Suivant
hbamaxhba
13 novembre 2019 à 18 h 03 min
Titre principal
Un paragraphe
hbamaxhba
14 novembre 2019 à 10 h 13 min
Puis j’ai changer les droits de l’ensemble du dossier pour que tous le
monde puisse le modifier avec la commande :
Voilà !
Que penser vous ?
Merci
Pierre GIRAUD
14 novembre 2019 à 15 h 04 min
Bonjour,
Amicalement,
Laisser un commentaire
Vous devez vous connecter pour publier un commentaire.