598,13 → 598,13 |
$suffixe_plte_cultivee = $this->construireSuffixeNomPltCultivee($nom); |
$nom_sci_ideal = ''; |
if ($nom['type_epithete'] == 'agg.') { |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' '. |
$this->formaterStyleNomGenre($nom['epithete_infra_generique']).' '. |
$nom['type_epithete']; |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']); |
$nom_sci_ideal .= ' '.$this->formaterStyleNomGenre($nom['epithete_infra_generique']); |
$nom_sci_ideal .= ' '.$nom['type_epithete']; |
} else { |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' '. |
$nom['type_epithete'].' '. |
$this->formaterStyleNomGenre($nom['epithete_infra_generique']); |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']); |
$nom_sci_ideal .= ' '.$nom['type_epithete']; |
$nom_sci_ideal .= ' '.$this->formaterStyleNomGenre($nom['epithete_infra_generique']); |
} |
$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : ''); |
if ($nom['nom_sci'] != $nom_sci_ideal) { |
621,21 → 621,19 |
*/ |
private function testerNomCompletEspece() { |
$noms_erreur = array(); |
$erreur = ''; |
foreach ($this->noms as &$nom) { |
if ($nom['rang'] == $this->manuel['rang_sp']) { |
$suffixe_plte_cultivee = $this->construireSuffixeNomPltCultivee($nom); |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' '; |
if (strstr($nom['nom_sci'] , ' x ') != false) { |
list($nom_sci_ideal, $erreur) = $this->formaterStyleEpitheteSpHybride($nom_sci_ideal, $nom['epithete_sp']); |
} else { |
$nom_sci_ideal .= utf8_encode(strtolower(utf8_decode($nom['epithete_sp']))); |
} |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']); |
$nom_sci_ideal .= (preg_match('/^(.+)\s+([x+])\s+(.+)$/i', $nom['epithete_sp'], $match) != '' ? |
' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[1])))).' '.utf8_encode(strtolower(utf8_decode($match[2]))). |
' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[3])))) : |
' '.utf8_encode(strtolower(utf8_decode($nom['epithete_sp'])))); |
$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : ''); |
$nom_sci_ideal = trim($nom_sci_ideal); |
if ($nom['nom_sci'] != $nom_sci_ideal) { |
$nom_sci_traite = $this->repererEspace($nom['nom_sci']); |
$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $erreur, $nom['exclure_taxref']); |
$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $nom['exclure_taxref']); |
} |
} |
} |
649,20 → 647,19 |
$noms_erreur = array(); |
foreach ($this->noms as &$nom) { |
if ($nom['rang'] > $this->manuel['rang_sp']) { |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' '. |
utf8_encode(strtolower(utf8_decode($nom['epithete_sp']))).' '. |
utf8_encode(strtolower(utf8_decode($nom['type_epithete']))).' '; |
$suffixe_plte_cultivee = $this->construireSuffixeNomPltCultivee($nom); |
if (strstr($nom['nom_sci'] , ' x ') != false) { |
list($nom_sci_ideal, $erreur) = $this->formaterStyleEpitheteInfraSpHybride($nom_sci_ideal, $nom['epithete_infra_sp'], $nom['genre']); |
} else { |
$nom_sci_ideal .= utf8_encode(strtolower(utf8_decode($nom['epithete_infra_sp']))); |
} |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']); |
$nom_sci_ideal .= ' '.utf8_encode(strtolower(utf8_decode($nom['epithete_sp']))); |
$nom_sci_ideal .= ' '.utf8_encode(strtolower(utf8_decode($nom['type_epithete']))); |
$nom_sci_ideal .= (preg_match('/^(.+)\s+([x+])\s+(.+)$/i', $nom['epithete_infra_sp'], $match) != '' ? |
' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[1])))).' '.utf8_encode(strtolower(utf8_decode($match[2]))). |
' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[3])))) : |
' '.utf8_encode(strtolower(utf8_decode($nom['epithete_infra_sp'])))); |
$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : ''); |
$nom_sci_ideal = trim($nom_sci_ideal); |
$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : ''); |
if ($nom['nom_sci'] != $nom_sci_ideal) { |
$nom_sci_traite = $this->repererEspace($nom['nom_sci']); |
$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $erreur, $nom['exclure_taxref']); |
$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $nom['exclure_taxref']); |
} |
} |
} |
1639,74 → 1636,6 |
return $genre_fmt; |
} |
|
private function formaterStyleEpitheteSpHybride(&$genre, &$epithete) { |
$nom_fmt = ''; |
$erreur = ''; |
if (trim($genre) == '') { |
if ($epithete != '') { |
$nom_fmt = $this->formaterFormuleHybridite($epithete); |
} else { |
$erreur = "Formule d'hybridité sans épithéte spécifique"; |
} |
} else { |
$nom_fmt = $this->formaterNomHybride($genre, $epithete); |
} |
return array($nom_fmt, $erreur); |
} |
|
private function formaterStyleEpitheteInfraSpHybride(&$nom_sci, &$infra, &$genre = null) { |
$nom_fmt = ''; |
$erreur = ''; |
if (trim($genre) == '') { |
if (trim($nom_sci) == '') { |
if (trim($infra) != '') { |
$nom_fmt = $this->formaterFormuleHybridite($infra); |
} else { |
$erreur = "Formule d'hybridité sans épithéte infraspécifique"; |
} |
} else { |
$erreur = "Formule d'hybridité avec épithéte spécifique"; |
} |
} else { |
$nom_fmt = $this->formaterNomHybride($nom_sci, $infra); |
} |
return array($nom_fmt, $erreur); |
} |
|
private function formaterNomHybride(&$nom_sci, &$epithete) { |
if (preg_match('/^(.+)\s+([x+])\s+(.+)$/i', $epithete, $match) != '') { |
$nom_fmt = $nom_sci.utf8_encode(ucfirst(strtolower(utf8_decode($match[1])))).' '. |
utf8_encode(strtolower(utf8_decode($match[2]))).' '. |
utf8_encode(ucfirst(strtolower(utf8_decode($match[3])))); |
} elseif (preg_match('/^([x+])\s+(.+)$/i', $epithete, $match) != '') { |
$nom_fmt = $nom_sci.utf8_encode(strtolower(utf8_decode($match[1]))).' '. |
utf8_encode(strtolower(utf8_decode($match[2]))); |
} else { |
$nom_fmt = $nom_sci.utf8_encode(strtolower(utf8_decode($epithete))); |
} |
return $nom_fmt; |
} |
|
private function formaterFormuleHybridite(&$epithete) { |
$liste_parents = explode(' x ', $epithete); |
if (count($liste_parents) == 2) { |
$nom_fmt = utf8_encode(ucfirst(strtolower(utf8_decode($liste_parents[0])))).' x '. |
utf8_encode(ucfirst(strtolower(utf8_decode($liste_parents[1])))); |
} else { |
for ($i=0; $i<count($liste_parents); $i++) { |
if (strstr(trim($liste_parents[$i]), ' ') == false) { |
$nom[] = utf8_encode(ucfirst(strtolower(utf8_decode(trim($liste_parents[$i]))))).' x '. |
utf8_encode(strtolower(utf8_decode(trim($liste_parents[$i+1])))); |
$i++; |
} else { |
$nom[] = utf8_encode(ucfirst(strtolower(utf8_decode($liste_parents[$i])))); |
} |
} |
$nom_fmt = implode(' x ', $nom); |
} |
return $nom_fmt; |
} |
|
private function repererEspace($nom_sci) { |
$nom_sci = str_replace(' ', '<span class="espace"> </span>', $nom_sci); |
return $nom_sci; |