647,6 → 647,7 |
*/ |
private function testerNomCompletInfraSpecifique() { |
$noms_erreur = array(); |
$erreur = null; |
foreach ($this->noms as &$nom) { |
if ($nom['rang'] > $this->manuel['rang_sp']) { |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' '. |
837,13 → 838,13 |
$noms_erreur = array(); |
foreach ($this->noms as &$nom) { |
if ($nom['epithete_sp'] != '') { |
$formule_hybridite = (strpos($nom, ' x ') !== false); |
$formule_hybridite = (strpos($nom['epithete_sp'], ' x ') !== false); |
$mots = explode(' ', $nom['epithete_sp']); |
foreach ($mots as $mot) { |
// TODO: créer un test qui vérifie la formule d'hybridité en la reconstruisant à partir des parents |
// afin que seuls des formules valides parviennent à la fonction |
// TODO: verifier que l'épithete n'est pas subsp. var. etc... (faire une liste) |
if (!(preg_match('/^[+x]$/', $mot) || $this->verifierEpitheteSp($mot) || ($formule_hybridite && verifierEpitheteGenre($mot)))) { |
if (!(preg_match('/^[+x]$/', $mot) || $this->verifierEpitheteSp($mot) || |
($formule_hybridite && $this->verifierEpitheteGenre($mot) && !$this->verifierEstAbbreviationInfraSp($mot)))) { |
$epithete_traite = $this->repererEspace($nom['epithete_sp']); |
$noms_erreur[] = array($nom['num_nom'], $epithete_traite, $nom['exclure_taxref']); |
break; |
1630,6 → 1631,14 |
return $ok; |
} |
|
private function verifierEstAbbreviationInfraSp($mot) { |
$ok = false; |
if(preg_match($this->manuel['abbr_rangs_infra_specifique'], $mot)) { |
$ok = true; |
} |
return $ok; |
} |
|
private function formaterStyleNomGenre(&$genre) { |
$genre_fmt = ''; |
if (preg_match('/^\s*([x+])\s+(.+)$/i', $genre, $match)) { |