Rev 430 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// commande : /opt/lampp/bin/php cli.php description_sp -a tester -n /home/jennifer/Tela-botanica_projets/Coste/descriptions/htmlclass Description {const DOSSIER_DSC_HTML = '../donnees/coste/descriptions/html/';const DOSSIER_DSC_TXT = '../donnees/coste/descriptions/txt/';private $conteneur = null;private $outils = null;private $messages = null;private $fichierNum = '';private $fichiersSpeciaux = array('2053', '0113', '0102');public function __construct(Conteneur $conteneur) {$this->conteneur = $conteneur;$this->outils = $conteneur->getOutils();$this->messages = $conteneur->getMessages();}public function genererDescriptionTxt() {$this->ouvrirDossier();}private function ouvrirDossier() {$nomDossier = self::DOSSIER_DSC_HTML;$tableaux = null;if (file_exists($nomDossier) === true) {if (is_dir($nomDossier)) {if ($dossierOuvert = opendir($nomDossier)) {while (($nomFichier = readdir($dossierOuvert)) !== false) {if (! is_dir($nomFichier) && preg_match('/e([0-9]{4})\.htm/', $nomFichier, $match)) {$this->fichierNum = $match[1];$nomFichier = $nomDossier.'/'.$nomFichier;$this->traiterFichier($nomFichier);$this->messages->afficherAvancement("Création fichier txt");}}closedir($dossierOuvert);} else {$this->messages->traiterErreur("Le dossier $nomDossier n'a pas pu être ouvert.");}} else {$this->messages->traiterErreur("$nomDossier n'est pas un dossier.");}} else {$this->messages->traiterErreur("Le dossier $nomDossier est introuvable.");}echo "\n";}private function traiterFichier($nomFichier) {$donnees = $this->analyserFichier($nomFichier);$txt = $this->nettoyerTxt($donnees['texte']);$fichierTxt = self::DOSSIER_DSC_TXT.$this->fichierNum.'.txt';file_put_contents($fichierTxt, $txt);}private function analyserFichier($nomFichier) {$this->fichier = $nomFichier;$donnees = null;if ($fichierOuvert = fopen($nomFichier, 'r')) {$i = 1;while ($ligne = fgets($fichierOuvert)) {if ($i == 24) {$donnees['titre'] = $this->traiterHtml($ligne);} elseif ($i == 45) {$donnees['texte'] = $this->traiterHtml($ligne, $au = true);$this->donnees['texte'] = $this->traiterHtml($ligne);} elseif ($i >= 46 && $i <= 62) {$donnees['texte'] .= $this->traiterHtml($ligne);} elseif ($i == 63 || preg_match('/Bdnff /ui', $ligne)) {$donnees['correspondance'] = $this->traiterHtml($ligne);} elseif ($i == 67 || preg_match('/Bdnff /ui', $ligne)) {$donnees['correspondance'] = $this->traiterHtml($ligne);}$i++;}if ($i > 94) {$this->messages->traiterErreur("Le fichier $nomFichier contient plus de 94 lignes ($i).");}fclose($fichierOuvert);} else {$this->messages->traiterErreur("Le fichier $nomFichier n'a pas pu être ouvert.");}return $donnees;}private function traiterHtml($donnees, $au = null) {$donnees_traitees = strip_tags($donnees,'<b>,<i>');$donnees_traitees = html_entity_decode($donnees_traitees, ENT_NOQUOTES, 'UTF-8');$donnees_traitees = str_replace(array('<B>', '</B>'), '**', $donnees_traitees);$donnees_traitees = str_replace(array('<I>', '</I>'), '//', $donnees_traitees);$donnees_traitees = trim($donnees_traitees)."\n";if ($au) {$donnees_traitees = str_replace('­', '', $donnees_traitees);}return $donnees_traitees;}private function nettoyerTxt($txt) {$txt = str_replace("\n\n", "\n", $txt);$txt = trim($txt);return $txt;}}?>