• Aucun résultat trouvé

PHP 5

N/A
N/A
Protected

Academic year: 2022

Partager "PHP 5"

Copied!
25
0
0

Texte intégral

(1)

PHP 5

Les fichiers

(2)

Les fichiers

Généralités

De nombreuses applications travaillent avec des fichiers

Les fichiers permettent de sauvegarder des données sur disque et les rendent en quelque sorte pérennes

On peut les utiliser dans des sessions ultérieures

Il existe de nombreuses fonctions pour les lire, les

remplir, les supprimer et même changer leurs attributs

Dans ce chapitre on va s’intéresser aux opérations de lecture/écriture puis nous regarderons quelques

opérations de leur manipulation sur disque

(3)

Les fichiers texte

Fichier texte

PHP ne lit et n'écrit dans les fichiers que sous forme de texte

Un fichier texte est un fichier caractère, construit sous un éditeur de texte

Il est organisé sous la forme d’une suite de lignes de caractères

Le fichier est suffixé par .txt

Comment travailler sur un fichier texte ?

Pour travailler sur un fichier texte, il faut l’ouvrir

On utilise pour cela fonction fopen

Exemple : ici on ouvre le fichier en lecture : " r"

<?php

$f=fopen("exemple.txt","r");

?>

(4)

Les différents modes d’ouverture

'r' ouvre en lecture seule : le pointeur est placé au début du fichier

'r+' ouvre en lecture/écriture : le pointeur est placé au début du fichier

'w' ouvre en écriture seule : le pointeur est placé au début du fichier. Réduit la taille du fichier à 0. Tentative de création si celui ci n'existe pas

'w+' ouvre en lecture/écriture : Le pointeur est placé au début du fichier. Réduit la taille du fichier à 0. Tentative de création si celui ci n'existe pas

'a' ouvre en écriture seule : Le pointeur est placé au

début du fichier. Tentative de création si celui ce n'existe pas.

'a+' ouvre en lecture/écriture : Le pointeur est placé à la fin du fichier. Tentative de création si celui ce n'existe pas.

'x' orée et ouvre le fichier en lecture seule : Le pointeur est placé au début du fichier. Si le fichier existe déjà, fopen va échouer

'x+' orée et ouvre le fichier en lecture/écriture : le

(5)

Les fichiers texte

Note

Si la fonction fopen() échoue lors de l'ouverture du fichier, celle ci retourne 0

Exemple :

<?php

if (!($f=fopen("exemple.txt","r"))) exit("Unable to open file!");

?>

Fermer un fichier

La fonction fclose() est utilisée pour fermer un fichier

<?php

fclose($f);

?>

(6)

Les fichiers texte

Écrire dans un fichier

L'écriture dans un fichier texte se fait avec la fonction fwrite(). Pour faire des retours à la ligne vous devez utiliser : "\n"

<?php

$f = 'exemple6.txt';

$text = "truc";

$var_entier=34;

$var_decimal=2500.567;

$handle = fopen($f,"w");

fwrite($handle, $text);

fwrite($handle, "\n" );

fwrite($handle, $var_entier);

fwrite($handle, "\n" );

fwrite($handle, $var_decimal);

fclose($handle);

?>

Les entiers et les décimaux sont écrits sous forme de chaînes de caractères et non sous forme binaire

(7)

Les fichiers texte

Écrire dans un fichier, de manière contrôlée

<?php

$f = 'exemple.txt';

$text = "ma chaine de caractères";

$handle = fopen($f,"w");

// Regarde si le fichier est accessible en écriture if (is_writable($f)) {

// Écrit $text et vérifie

if (fwrite($handle, $text) === FALSE) {

echo 'Impossible d\'écrire dans le fichier '.$f.'';

exit;

}

echo 'Ecriture terminée';

fclose($handle);

}

else {

echo 'Impossible d\'écrire dans le fichier '.$f.'';

}

?>

(8)

Les fichiers texte

Trouver la fin d'un fichier

La fonction feof() est utilisée pour tester la fin du fichier

<?php

if (feof($f))

echo 'Fin du fichier';

?>

(9)

Les fichiers texte

Comment lire caractère par caractère ?

Par fgetc()

Exemple : <?php

if (!($f=fopen("exemple.txt","r")))

exit("Impossible d'ouvrir le fichier.");

while (!feof($f)) {

$texte=fgetc($f);

echo $texte;

}

fclose($f);

?>

(10)

Les fichiers texte

Comment lire un fichier ligne par ligne ?

Par fgets() :

Exemple

<?php

$ressource_fichier = fopen('test.txt', 'r');

if($ressource_fichier) {

$contenu_fichier = '';

while(!feof($ressource_fichier)) //tant que l'on est pas à la fin du fichier

{

$contenu_fichier .= fgets($ressource_fichier);//récupère la ligne en cours et l'ajoute au contenu de la variable $contenu_fichier

}

fclose($ressource_fichier);

echo $contenu_fichier; //affiche le contenu du fichier }

?>

(11)

Les fichiers texte

Lire un fichier sous forme de tableau

Chaque ligne du tableau correspondra à une ligne du fichier

Ceci est très pratique quand vous avez besoin d'une ligne en

particulier dans votre fichier (dont vous connaissez le numéro) ou encore pour faire des opérations de tri alphabétique, numérique…

La fonction que nous allons utiliser s'appelle file()

Comme son nom ne l'indique pas, elle va vous retourner un tableau contenant tout votre fichier

Voici comment on l'utilise :

<?php

$tableau = file('test.txt'); //Place le contenu du fichier dans un tableau, on a supposé ici que le fichier existe sous peine d'avoir une erreur

(12)

Les fichiers texte

L’exemple complet :

<?php

$tableau = file('test.txt');

if(is_array($tableau)) //Si la variable $tableau est bien un tableau, on peut continuer

{

$contenu_fichier = '';

foreach($tableau AS $ligne) {

$contenu_fichier .= $ligne;

}

echo $contenu_fichier; //Affiche le contenu du fichier , notez que l'on a pas besoin d'utiliser fclose() ici }

?>

(13)

Les fichiers texte

Positionnement dans le fichier

Placer le pointeur au début du fichier : rewind()

Permet de revenir en début de fichier, à l’octet 0

Exemple

<?php

$fp=fopen("monfichier.txt", "rb");

//On affiche le fichier ligne par ligne

//rb : pour lire (‘r ’) un fichier enregistré sous forme binaire (‘b’) //On prévient ainsi PHP qui ne lit que du texte

while($ligne=fgets($fp,1024)({

echo $ligne;

}

//On se place au début rewind($fp);

//On réaffiche la première ligne

$ligne1 = fgets($fp,1024);

echo $ligne1;

(14)

Les fichiers texte

Positionnement dans le fichier

Placer le pointeur en un point du fichier : fseek()

Exemple

<?php

$fp=fopen("monfichier.txt", "rb");

//On se positionne au 42ème caractère fseek($fp,42);

echo fgetc($fp);

//On se positionne 10 caractères plus loin, donc au 52 fseek($fp,10, SEEK_CUR);

echo fgetc($fp);

//Puis 20 caractères avant la fin du fichier fseek($fp,-20, SEEK_END);

echo fgetc($fp);

//On revient au 42e caractère à partir du début fseek($fp,42, SEEK_SET);

echo fgetc($fp);

?>

(15)

Les fichiers texte

Positionnement dans le fichier

fseek() est utilisée de concert avec la fonction ftell() qui renseigne sur la position du pointeur

Exemple

<?

$fp=fopen("monfichier.txt", "rb");

//On se positionne au 42ème octet fseek($fp,42);

//On récupère l'emplacement du pointeur

$position=ftell($fp);

?>

(16)

Les fichiers texte

Création et effacement

On peut utiliser la fonction touch() pour modifier la date de modification d’un fichier

Exemple

<?

//ici on décide de la date de modification du fichier

$time=mktime(0,0,0,10,10,2010);

$fichier='fantome.txt';

touch($fichier,$time);

}

?>

(17)

Les fichiers texte

Effacement de fichier

Unlink()

Exemple

<?

$fichier='fantome.txt';

if (file_exists($fichier)){

unlink($fichier);

}

?>

(18)

Les fichiers texte

Parcourir un répertoire

Il s’agit de parcourir un répertoire et d’afficher la liste des noms de fichiers contenus : lecture_repertoire.php

<?php

$dir=dir('.'); //le . Indique le répertoire courant while($nom=$dir->read()){

echo $nom,'<br>';

}

$dir->close();

?>

(19)

Les fichiers texte

Parcourir un répertoire

Cela donne pour le répertoire courant : L3-ISC-Exemples-Fichiers

. ..

ch11exo1.php ch11exo2.php ch11exo3.php ch11exo3b.php ch11exo3c.php ch11exo3d.php compteur.txt connex.txt fichiers1.php fichiers2.php fichiers3.php fichiers4.php fichiers5.php fichiers6.php fichiers7.php html.txt

javascript.txt

lecture_rapide.php lecture_repertoire.php

(20)

Les fichiers texte

Parcourir un répertoire

Utilisation de opendir(), readdir() et closedir() avec le même résultat que précédemment : lecture_repertoire2.php

<?

//script récupérant tous les fichiers d'un répertoire //dans un tableau $fichier

$dir=opendir(".");

$fichiers=array();

while($nom=readdir($dir)){

$fichiers[]=$nom;

echo $nom.'<br>';

}

closedir($dir);

(21)

Les fichiers texte

Parcourir un répertoire

Utilisation de masque par glob() : lecture_repertoire3.php, avec le même résultat que précédemment

<?php

$fichiers=glob('./*');

print_r($fichiers);

?>

Ici, on va sélectionner tous les fichiers .jpg

<?php

$fichiers=glob('./*.jpg');

print_r($fichiers);

?>

(22)

Les fichiers texte

Position dans l’arborescence

Getcwd() permet de connaître le nom du répertoire courant

<?php

echo ‘repertoire courant : ‘.getcwd();

?>

chdir() pour remonter dans l’arborescence

<?php

echo ‘repertoire courant : ‘.getcwd().’<br>’;

chdir(‘..’);

echo ‘repertoire courant : ‘.getcwd().’<br>’;

?>

(23)

Les fichiers texte

Date de modification des fichiers

filectime() : donne la date de création

filemtime() : donne la date de dernière modification

fileatime() : donne la date de dernier accès

<?php

if(filemtime('monfichier.txt')>filectime('monfichier.txt')){

echo 'le fichier a été modifié depuis sa création';

} else

echo 'le fichier n\'a été modifié';

?>

(24)

Les fichiers texte

Taille de fichier : filesize()

<?php

$fichier='monfichier.txt‘;

echo $fichier .‘ fait ‘ . filesize($fichier). ‘ octets ‘;

?>

(25)

Les fichiers texte

Sécurité

Découvrez par vous-mêmes plusieurs fonctions permettant de connaître le propriétaire, la permission d’accès, de

changement de ces permissions…

Références

Documents relatifs

- un texte rouge de taille 20pt centré en titre - une image centrée. a) Ecrire un programme PHP qui, à la soumission du formulaire, affiche une page avec une image de

Assuming that $languages is the same array as defined in the last two examples, then the following: $last3 = array_slice$languages, -3; printf"Last 3: %s\n", var_export$last3,

Over the next few pages, you’ll create the database table and a PHP script for adding new tasks... To create

DELOYER Maxime 1000. DELOYER

Ils dansent ensemble toute la nuit, et après une série de slows, et Loïc caresse le sexe de pépé, pépé en peut plus et décident de faire l'amour dans la voiture.... Loïc

[r]

Le nombre 1 a pour

Emplacement, Nom et Extension du fichier à ouvrir Si ce nom de fichier n'existe pas =&gt; création du fichier Instruction PHP pour écrire dans un fichier.. Variable de connexion