Téléchargement  ·  Forum  ·  PHP Facile !  ·  SQL Facile !  ·  XML Facile !  ·  ToutEstFacile !  ·  Nous contacter
?>PHPFacile! Team
Qui sommes nous ?
Nos scripts ?
ESIAL Service
?>Présentation
A quoi sert PHP ?
- Introduction
- PHP ou pas PHP?
Installation
- Sous Windows
- Sous Linux
Premier script
?>Cours
Include
- Le B.A. BA
- Mise en Page/Frames
Les variables prédéfinies
- Le B.A. BA
> Stats/Espion
Formulaires
- Le B.A. BA
> Quizz
- Upload de fichiers
Dates
Fichiers et répertoires
- le B.A. BA
> Sondage
Images
Bases de données
- le B.A. BA (sondage)
> Compteur de clics
- Info membre (ajout/modification)
- Affichage par page (moteur de recherche)
Cookies
Sessions
- le B.A. BA
> Caddie virtuel
- Section membre
Messagerie
- Envoi de mails
- Webmail (IMAP)
chmod 777
XML (et RSS/RDF)
?>No problemo
Erreurs Fréquentes
Forum
?>Divers
Livres
Scripts & Téléchargement
PHPFacileDoc
?>Manuels
MiniDoc phpMyAdmin
Manuel officiel PHP en Français
Manuel MySQL en Français

Site au hasard Sites du webring
Rejoindre le webring
pub

Hit-Parade

Parsing à distance (2/3)

On va créer une classe chargée de récupérer les informations que l'on recherche. C'est absolument pas necessaire de créer une classe pour ça, ici elle est même plutôt gênante car elle va nous obliger à parcourir le fichier plusieurs fois mais c'est pour montrer comment fonctionne une classe. On va placer cette classe dans le fichier parser.php

<?php
class parser {

var
$filename;

function
parser($filename) {
  
$this->filename=$filename;
}

function
get_date() {
  
$file=fopen($this->filename,"r");
    if (!
$file) { echo "<p>Impossible d'ouvrir le fichier</p>.\n"; exit; }
  
$line=fgets($file,1024);
  while(!
strstr($line,"Tirages")) {
   
$line=fgets($file,1024);
  }
  
fclose($file);
  
ereg("<br>([^<]*)</b>",$line,$no);
  return
$no[1];
}

function
get_1er_tirage() {
  
$file=fopen($this->filename,"r");
    if (!
$file) { echo "<p>Impossible d'ouvrir le fichier</p>.\n"; exit; }
  while(!
strstr($line,"PREMIER")) {
   
$line=fgets($file,1024);
  }
  while (
count($result)!=7) {    
   if (
ereg("/([0-9]*).gif",$line,$no))
    
$result[]=$no[1];
   
$line=fgets($file,1024);
  }
  
fclose($file);
  return
$result;
}

function
get_2eme_tirage() {
  
$file=fopen($this->filename,"r");
    if (!
$file) { echo "<p>Impossible d'ouvrir le fichier</p>.\n"; exit; }
  while(!
strstr($line,"DEUXIEME")) {
   
$line=fgets($file,1024);
  }
  while (
count($result)!=7) {    
  if (
ereg("/([0-9]*).gif",$line,$no))
    
$result[]=$no[1];
   
$line=fgets($file,1024);
  }
  
fclose($file);
  return
$result;
}
}
?>

Remarques:

  1. var $filename déclare ce que l'on appelle un attribut de classe
  2. la function parser($filename) est un peu spéciale dans la mesure où c'est le constructeur de la classe, cette fonction est appelée quand un objet parser est créé, nous reviendrons dessus.
  3. On sait que la première occurence du mot Tirage est sur la même ligne que la date du tirage. Après avoir ouvert le fichier distant, on le lit ligne par ligne jusqu'à ce que l'on trouve le mot Tirage dans la ligne. Une fois la ligne obtenue, il faut utiliser une expression régulière pour trouver la date. On a vu dans le code source que la date était juste entre <br> et </b>. On utilise l'expression régulière suivante:<br>([^<]*)</b> entre parenthèse, on met le "motif" que l'on veut récupérer. Ici n'importe quels caractères sauf <. Le résultat est stocké dans $no[1]
  4. Les deux fonctions suivantes sont identique a un mot clé près. Le principe ici est d'avancer dans le fichier jusqu'à trouver un des mots clés puis à "parser" chacune des lignes pour récupérer les numéros de boules. Un fois que l'on a les 7 numéros on quitte la boucle et on renvoie le tableau.

Voilà la classe est prête, il n'y a plus qu'a l'utiliser.