Bonjour. visiteurs jour : 41       Au président     Beauté santé     Infos loisirs     Ensemble      Jean      Informatique     Einstein     Santé corona

Les joies de l'informatique et de l'internet !





Coucou et merci


  Accueil - Disques - Excel - Informatique - Infos - Internet - Javascript - logiciels  - Programation - Sites RJ - Vidéo - Plan du site -



   

Fichiers

 

Théorie sur les fichiers

 

Définir le fichier $fic= "mon_dossier/mon_fichier.ext"; 

Vérifier si le fichier existe if (file_exists($fic)) { …

1)     Soit :

Lire tout le fichier dans un tableau :  $tableau = file($fic);

Le nombre de lignes du fichier = count($tableau) ;

Pour afficher le fichier

While ( list ( $cle,$val ) = each ($tableau)) {

             echo $val."<br>";

}

 Soit ouvrir le fichier $fp = fopen($fic,"r"); 

 

Lire n  caractères et positionne le pointeur sur le caractère suivant

Les caractères dans le fichier sont pointés de 1 à n

Au départ le pointeur est sur 0

(s'arrête avant s'il rencontre \n ou la fin du fichier eof )

echo fgets($fic, 4096);   // ici n= 4096 = 1 secteur

La position du pointeur est dans ftell($fic); si on a lu 4096 c le pointeur contient la dernière position lue=4096. Elle est  modifiable :  $ptr = fseek($fp,$ptr-10);

 

lire tout le fichier

while (!feof($fp)) {

   echo fgets($fp, 4096)."<br>";

}

fclose($fp);

 

Variante

$lg_fic=filesize("le_fichier.txt");

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

$page=fread($fp,$lg_fic);

fclose($fp);

 

en plus compact

Récupère  l'ensemble du fichier dans une variable texte

$fichier = fread(fopen("test.txt", "r"), filesize("test.txt"));

echo $fichier;

 

Voir aussi

 

file() - Lit le fichier et renvoie le résultat dans un tableau

fgets() - Récupère la ligne courante sur laquelle se trouve le pointeur du fichier

fread() - Lecture du fichier en mode binaire

readfile() - Affiche un fichier à l’écran

file_get_contents lit le contenu du fichier

file_put_contents() - Écrit un contenu dans un fichier

stream_get_contents() - Lit tout un flux dans une chaîne

stream_context_create() - Crée un contexte de flux

 

 

Lecture d’une page Web distante

$page=implode("",file("http://www.asp-php.net/tutorial/asp-php/lecture.php"));

 

Nota : implode Retourne une chaîne contenant la représentation en chaîne de caractères de tous les éléments du tableau ici file(), dans le même ordre, avec la chaîne "", placée entre chaque élément.

$chaine=implode($sepateur, $tableau)

Open de fichier

If ( !$fp = fopen("../fichier.txt","r") echo « échec à l’ouverture »; //lecture

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

exit("Unable to open file!");

 

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

     exit("Unable to open file!");

else Lire le fichier…

 

r ouverture en lecture seulement

r+ ouverture en lecture et écriture

w ouverture en écriture seulement (crée le fichier s'il n'existe pas)

w+ ouverture en lecture et écriture (crée le fichier si existe pas)

a ouverture en écriture seulement avec ajout du contenu à la fin du fichier (crée le fichier si existe pas)

a+ ouverture en lecture et écriture avec ajout du contenu à la fin du fichier (crée le fichier si existe pas)

x Crée et ouvre le fichier en lecture seule. Si le fichier existe fopen() va échouer nota à partir de PHP 4.3.2

x+ Crée et ouvre le fichier en lecture et écriture; 

 

$fp = fopen("ftp://phpfrance.com/pub/fichier.txt","w"); // un ftp ?

 

la fonction fopen permet d'ouvrir des fichiers présents sur le web grâce à leur URL.

Pour récupérer le contenu d'une page d'un site web :

$fp = fopen("http://www.commentcamarche.net","r"); //lecture du fichier

$page=""; 

while (!feof($fp)) { //on parcourt tout le fichier jusqu’à la fin (feof)

     $page .= fgets($fp, 4096); // lecture du contenu par paquets de 4096c.

}

Récupérer le titre de la page Web ( texte compris entre les balises <TITLE> et </TITLE>).

$titre = eregi("<title>(.*)</title>",$page,$regs); //on isole le titre

echo $regs[1]; // ???

 

Lecture de fichier

file_get_contents

Le plus simple sans open ni close !

$fichier=file_get_contents('test.txt');//récupère le contenu du fichier et le place dans la variable $fichier

Afficher un fichier

readfile() identique à file_get_contents() sauf qu'elle retourne le contenu du fichier vers la sortie standard et retourne le nombre d'octets lus. On l’utilise donc dans le cas où l'on ne veut pas avoir le fichier dans une chaîne mais l’afficher à l’écran

readfile("$rep."/".$page) affiche le fichier à l’endroit de la commande

@$fichier=readfile("$rep."/".$page) ; // Affiche le fichier et le place dans la variable $fichier.

Un fichier peut se lire comme un tableau de lignes

$tableau = file('test.txt'); //Place le contenu du fichier dans un tableau,

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

}

 

Existence d'un fichier

fonction file_exists() :

if (file_exists("essai.txt")) echo "Fichier existant";

else echo "Introuvable !";

 

Ecriture d'un fichier

$fp=fopen("exemple.txt","w")

fputs ($fp, "XYZ…"); 

fclose ($fp); 

 

 

Nota : fseek ($fp, 0);  fseek permet de se positionner dans un fichier pour écrire, ici on se place au début en position=0

 

Ecriture dans un fichier

fputs

fputs($fp, "ligne1\nligne 2\naaa tabulation\tBBB"); //fputs() (aussi parfois appelée fwrite()

 

file_put_contents($file, $current);

comme file_get_contents pas besoin d’open ni de close ultra simple, écrit tout d’un coup

exemple

$file = "people.txt";  $fic = file_get_contents($file);

$contenu .= "Jean Dupond\n"; // on ajoute un nom

 

Fichiers texte : Noter le \n qui est un retour à la ligne comme le <BR> dans un document html

Prévoir <br>\n si le fichier est html et doit être lu dans un éditeur texte

 

file_put_contents($file, $contenu); // On écrit le résultat dans le fichier

On peut écrire en ajout :

file_put_contents("people.txt", "Jean Dupond\n", FILE_APPEND);

file_put_contents"($file, $ajout."\n", FILE_APPEND);

 

 

Fermeture

fclose($fp); // On ferme le fichier

 

fpassthru() permet d'envoyer le contenu du fichier dans la fenêtre du navigateur.

booléen fpassthru(entier etat);  Cette fonction envoie le contenu du fichier à partir de la position courante dans le fichier, c'est-à-dire qu'il est possible par exemple de lire quelques lignes avec fgets(), puis d'envoyer le reste au navigateur...

Existence d’un fichier

if (file_exists($filename)) …

Créer un répertoire

mkdir('testdir', 0777); 

Suppression de fichier, de répertoire

if( file_exists ( $fichier))  unlink( $fichier ) ;

Alternative: @unlink( $fichier ) ;

 

rmdir pour la suppression de dossiers.

 

Pour supprimer l'intégralité des fichiers d'une même extension :

foreach (glob("*.jpg") as $filename) {

      unlink($filename);

}

 

Il peut arriver un problème de type permission refusée Warning: unlink(/home/www/test.txt): Permission denied in /home/www/testeffacer.php on  line 7

 Cette erreur provient d'un manque de droit sur les fichiers. Utilisez alors la fonction chmod pour vous donner le droit d’effacer !

umask(0000); 

chmod(fichier,0777); 

unlink (fichier); 

 

Lire une page Web

Je souhaiterais savoir s'il est possible de recevoir les données d'un site Web, de les mettre en forme puis de les afficher

Solution proposée :

$text = file_get_contents("http://lesite.com" );

 

if (preg_match_all('#<td><nobr>(.*)&nbsp;</nobr></td>#i', $text, $match_nom)) //regex recherche des données

  {    echo $match_nom[1][1]; //afficher la donnée  }

 

Télécharger un fichier par POST

 

Coté HTML        les données vont contenir des fichiers

<form action="upload.php" method="post" enctype="multipart/form-data">

<div>Sélectionner le fichier à télécharger : <input type="file" name="fichier"/><br>

        <input type="submit" value="envoyer" />

</div>                                                                 type="file" =fichier

</form>

 

Le submit envoie le ficier au programme upload.php dans les varaibles suivantes :

  $_FILES['fichier']['name']          -> Le nom original du fichier client (fichier= le name du input type file

  $_FILES['fichier']['type']            -> Le type MIME du fichier. Non sûr  (jpg? Png?)

  $_FILES['fichier']['size']             -> La taille, en octets, du fichier téléchargé.

  $_FILES['fichier']['tmp_name']-> Le nom temporaire du fichier sur le +serveur

  $_FILES['fichier']['error']           -> Le code d'erreur

ex pour une image jpg

if (!empty($_FILES['fichier']['tmp_name']) && is_uploaded_file($_FILES['fichier']['tmp_name'])) {

    // Le fichier a bien été téléchargé. Par sécurité on utilise getimagesize plutot que les variables $_FILES

    list($larg,$haut,$type,$attr) = getimagesize($_FILES['fichier']['tmp_name']);

    echo $larg." ".$haut." ".$type." ".$attr;

    if ($type == 2) {     //  c'est bien un JPEG => type=2                 lieu de stockage sur le serveur

         if (move_uploaded_file($_FILES['fichier']['tmp_name'],'images/toto.jpg'))  echo "Copie réussie";

    }else echo "echec de la copie";

} else  echo "mauvais type de fichier";

 

Vérifier le type de fichier par so extension :

$Extensions_ok = array("txt", "rtf", "doc", "pdf","jpg", "jepg", "png");

if (in_array(end(explode(".", $fileName)), $Extensions_ok))

         //echo "Bon type de fichier"; ……….

else { echo "erreur de type ou dextension"; exit;}

 

 

 

-
vues  958     En ligne actuellement :   3   Total des clics  1665378