Rev 344 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// Encodage : UTF-8// +-------------------------------------------------------------------------------------------------------------------+/*** Découpage des intitulés auteurs** Description : classe permettant de découper les intitulés d'auteurs.*//Auteur original :* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>* @copyright Tela-Botanica 1999-2009* @licence GPL v3 & CeCILL v2* @version $Id: DecoupageAuteur.class.php 1873 2009-03-31 10:07:24Z Jean-Pascal MILCENT $*/// +-------------------------------------------------------------------------------------------------------------------+class DecoupageAuteur extends Decoupage {private $expression = array();private $expression_in = array();public function __construct(){parent::__construct();$this->expresion[2] = '/^\s*\(([^)]+?)\) ('.$this->Auteur.') ex ('.$this->Auteur.')('.$this->Date.')?\s*$/u';$this->expresion[3] = '/^\s*\(([^)]+?)\) ('.$this->Auteur.')('.$this->Date.')?\s*$/u';$this->expresion[5] = '/^\s*('.$this->Auteur.') ex ('.$this->Auteur.')('.$this->Date.')?\s*$/u';$this->expresion[6] = '/^\s*('.$this->Auteur.')('.$this->Date.')?\s*$/u';$this->expresion[7] = '/^\s*\(([^)]+?)\) ('.$this->Auteur.'),? ('.$this->ComNom.')\s*$/u';$this->expresion[8] = '/^\s*\(('.$this->Auteur.') ex ('.$this->Auteur.')\) ('.$this->ComNom.')\s*$/u';$this->expresion[9] = '/^\s*('.$this->Auteur.') ex ('.$this->Auteur.'),? ('.$this->ComNom.')\s*$/u';$this->expresion[10] = '/^\s*\(('.$this->Auteur.')\) ('.$this->ComNom.')\s*$/u';$this->expresion[11] = '/^\s*('.$this->Auteur.'),? ('.$this->ComNom.')\s*$/u';$this->expresion[12] = '/^\s*('.$this->ComNom.')\s*$/u';$this->expresion[13] = '/^\s*\(('.$this->Auteur.')\) ('.$this->Auteur.'),? ('.$this->InAut.')\s*$/u';$this->expresion[14] = '/^\s*\(('.$this->Auteur.') ex ('.$this->Auteur.')\) ('.$this->InAut.')\s*$/u';$this->expresion[15] = '/^\s*('.$this->Auteur.') ex ('.$this->Auteur.'),? ('.$this->InAut.')\s*$/u';$this->expresion[16] = '/^\s*\(('.$this->Auteur.')\) ('.$this->InAut.')\s*$/u';$this->expresion[17] = '/^\s*('.$this->Auteur.') ('.$this->InAut.')\s*$/u';$this->expresion[18] = '/^\s*('.$this->Auteur.'),? ('.$this->InAut.')\s*$/u';$this->expresion[19] = '/^\s*('.$this->InAut.')\s*$/u';$this->expresion_in[1] = '/^\s*[iI]n ('.$this->Auteur.') ?('.$this->ComNom.')?\s*$/u';$this->expresion_in[2] = '/^\s*[iI]n ('.$this->NumAuteur.') ?('.$this->ComNom.')?\s*$/u';}public function decouper($str_intitule){$aso_intitule = array( 'auteur_basio_ex' => '', 'auteur_basio' => '','auteur_modif_ex' => '', 'auteur_modif' => '','date' => '', 'annee' => '', 'commentaires_nomenclaturaux' => '','citation_in_auteur' => '', 'integration_ok' => 1,'erreur_mark' => '', 'erreur_notes' => '');if ($str_intitule != '') {$morceau = array();//Gestion des intitulés auteurs SANS commentaires nomenclaturauxif (preg_match($this->expresion[6], $str_intitule, $morceau)) {$aso_intitule['auteur_basio'] = $morceau[1];$aso_intitule['date'] = $morceau[2];$aso_date = $this->decouperDate($aso_intitule['date']);$aso_intitule['annee'] = $aso_date['annee'];} else if (preg_match($this->expresion[5], $str_intitule, $morceau)) {$aso_intitule['auteur_basio_ex'] = $morceau[1];$aso_intitule['auteur_basio'] = $morceau[2];$aso_intitule['date'] = $morceau[3];$aso_date = $this->decouperDate($aso_intitule['date']);$aso_intitule['annee'] = $aso_date['annee'];} else if (preg_match($this->expresion[3], $str_intitule, $morceau)) {$aso_auteur = $this->decouperAuteurEx($morceau[1]);$aso_intitule{'auteur_basio_ex'} = $aso_auteur['auteur_ex'];$aso_intitule{'auteur_basio'} = $aso_auteur['auteur'];$aso_intitule['erreur_mark'] = $aso_auteur['erreur_mark'];$aso_intitule['erreur_notes'] = $str_intitule;$aso_intitule{'auteur_modif'} = $morceau[2];$aso_intitule{'date'} = $morceau[3];$aso_date = $this->decouperDate($aso_intitule['date']);$aso_intitule['annee'] = $aso_date['annee'];} else if (preg_match($this->expresion[2], $str_intitule, $morceau)) {$aso_auteur = $this->decouperAuteurEx($morceau[1]);$aso_intitule{'auteur_basio_ex'} = $aso_auteur['auteur_ex'];$aso_intitule{'auteur_basio'} = $aso_auteur['auteur'];$aso_intitule['erreur_mark'] = $aso_auteur['erreur_mark'];$aso_intitule['erreur_notes'] = $str_intitule;$aso_intitule{'auteur_modif_ex'} = $morceau[2];$aso_intitule{'auteur_modif'} = $morceau[3];$aso_intitule{'date'} = $morceau[4];$aso_date = $this->decouperDate($aso_intitule['date']);$aso_intitule['annee'] = $aso_date['annee'];} else if (preg_match($this->expresion[7], $str_intitule, $morceau)) {// Gestion des intitulés auteurs AVEC commentaires nomenclaturaux$aso_auteur = $this->decouperAuteurEx($morceau[1]);$aso_intitule{'auteur_basio_ex'} = $aso_auteur['auteur_ex'];$aso_intitule{'auteur_basio'} = $aso_auteur['auteur'];$aso_intitule['erreur_mark'] = $aso_auteur['erreur_mark'];$aso_intitule['erreur_notes'] = $str_intitule;$aso_intitule{'auteur_modif'} = $morceau[2];$aso_intitule{'commentaires_nomenclaturaux'} = $morceau[3];} else if (preg_match($this->expresion[8], $str_intitule, $morceau)) {$aso_intitule{'auteur_basio_ex'} = $morceau[1];$aso_intitule{'auteur_basio'} = $morceau[2];$aso_intitule{'commentaires_nomenclaturaux'} = $morceau[3];} else if (preg_match($this->expresion[9], $str_intitule, $morceau)) {$aso_intitule{'auteur_basio_ex'} = $morceau[1];$aso_intitule{'auteur_basio'} = $morceau[2];$aso_intitule{'commentaires_nomenclaturaux'} = $morceau[3];} else if (preg_match($this->expresion[10], $str_intitule, $morceau)) {$aso_intitule{'auteur_basio'} = $morceau[1];$aso_intitule{'commentaires_nomenclaturaux'} = $morceau[2];} else if (preg_match($this->expresion[11], $str_intitule, $morceau)) {$aso_intitule{'auteur_basio'} = $morceau[1];$aso_intitule{'commentaires_nomenclaturaux'} = $morceau[2];} else if (preg_match($this->expresion[12], $str_intitule, $morceau)) {$aso_intitule{'commentaires_nomenclaturaux'} = $morceau[1];} else if (preg_match($this->expresion[13], $str_intitule, $morceau)) {// Gestion des intitulés auteurs AVEC "in"$aso_intitule{'auteur_basio'} = $morceau[1];$aso_intitule{'auteur_modif'} = $morceau[2];$aso_intitule{'citation_in_auteur'} = $morceau[3];} else if (preg_match($this->expresion[14], $str_intitule, $morceau)) {$aso_intitule{'auteur_basio_ex'} = $morceau[1];$aso_intitule{'auteur_basio'} = $morceau[2];$aso_intitule{'citation_in_auteur'} = $morceau[3];} else if (preg_match($this->expresion[15], $str_intitule, $morceau)) {$aso_intitule{'auteur_basio_ex'} = $morceau[1];$aso_intitule{'auteur_basio'} = $morceau[2];$aso_intitule{'citation_in_auteur'} = $morceau[3];} else if (preg_match($this->expresion[16], $str_intitule, $morceau)) {$aso_intitule{'auteur_basio'} = $morceau[1];$aso_intitule{'citation_in_auteur'} = $morceau[2];} else if (preg_match($this->expresion[17], $str_intitule, $morceau)) {$aso_intitule{'auteur_basio'} = $morceau[1];$aso_intitule{'citation_in_auteur'} = $morceau[2];} else if (preg_match($this->expresion[18], $str_intitule, $morceau)) {$aso_intitule{'auteur_basio'} = $morceau[1];$aso_intitule{'citation_in_auteur'} = $morceau[2];} else if (preg_match($this->expresion[19], $str_intitule, $morceau)) {$aso_intitule{'citation_in_auteur'} = $morceau[1];} else {$aso_intitule['erreur_mark'] = 'erreur';$aso_intitule['erreur_notes'] .= $str_intitule;}}return $aso_intitule;}public function decouperIn($str_intitule){$aso_intitule = array( 'in_intitule_auteur' => '', 'in_commentaire_nomenclatural' => '','erreur_mark' => '', 'erreur_notes' => '');if ($str_intitule != '') {$morceau = array();if (preg_match($this->expresion_in[1], $str_intitule, $morceau)) {$aso_intitule{'in_intitule_auteur'} = $morceau[1];$aso_intitule{'in_commentaire_nomenclatural'} = $morceau[2];} else if (preg_match($this->expresion_in[2], $str_intitule, $morceau)) {$aso_intitule{'in_intitule_auteur'} = $morceau[1];$aso_intitule{'in_commentaire_nomenclatural'} = $morceau[2];} else {$aso_intitule['erreur_mark'] = 'erreur';$aso_intitule['erreur_notes'] .= $str_intitule;}}return $aso_intitule;}private function decouperAuteurEx($chaine) {$aso_retour = array('auteur_ex' => '', 'auteur' => '', 'erreur_mark' => '', 'erreur_notes' => '');if (preg_match($this->expresion[5], $chaine, $morceau)) {$aso_retour['auteur_ex'] = $morceau[1];$aso_retour['auteur'] = $morceau[2];} else if (preg_match($this->expresion[6], $chaine, $morceau)) {$aso_retour['auteur'] = $morceau[1];} else {$aso_retour['erreur_mark'] = 'erreur';$aso_retour['erreur_notes'] = $chaine;}return $aso_retour;}private function decouperDate($chaine){$aso_retour = array('annee' => '');if (preg_match('/^\[(\d{4})]\$/', $chaine, $morceau = array())) {$aso_retour['annee'] = $morceau[1];}return $aso_retour;}}?>