Line 596... |
Line 596... |
596 |
foreach ($this->noms as &$nom) {
|
596 |
foreach ($this->noms as &$nom) {
|
597 |
if ($nom['rang'] > $this->manuel['rang_genre'] && $nom['rang'] < $this->manuel['rang_sp']) {
|
597 |
if ($nom['rang'] > $this->manuel['rang_genre'] && $nom['rang'] < $this->manuel['rang_sp']) {
|
598 |
$suffixe_plte_cultivee = $this->construireSuffixeNomPltCultivee($nom);
|
598 |
$suffixe_plte_cultivee = $this->construireSuffixeNomPltCultivee($nom);
|
599 |
$nom_sci_ideal = '';
|
599 |
$nom_sci_ideal = '';
|
600 |
if ($nom['type_epithete'] == 'agg.') {
|
600 |
if ($nom['type_epithete'] == 'agg.') {
|
601 |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']);
|
601 |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' '.
|
602 |
$nom_sci_ideal .= ' '.$this->formaterStyleNomGenre($nom['epithete_infra_generique']);
|
602 |
$this->formaterStyleNomGenre($nom['epithete_infra_generique']).' '.
|
603 |
$nom_sci_ideal .= ' '.$nom['type_epithete'];
|
603 |
$nom['type_epithete'];
|
604 |
} else {
|
604 |
} else {
|
605 |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']);
|
605 |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' '.
|
606 |
$nom_sci_ideal .= ' '.$nom['type_epithete'];
|
606 |
$nom['type_epithete'].' '.
|
607 |
$nom_sci_ideal .= ' '.$this->formaterStyleNomGenre($nom['epithete_infra_generique']);
|
607 |
$this->formaterStyleNomGenre($nom['epithete_infra_generique']);
|
608 |
}
|
608 |
}
|
609 |
$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : '');
|
609 |
$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : '');
|
610 |
if ($nom['nom_sci'] != $nom_sci_ideal) {
|
610 |
if ($nom['nom_sci'] != $nom_sci_ideal) {
|
611 |
$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
|
611 |
$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
|
612 |
$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $nom['exclure_taxref']);
|
612 |
$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $nom['exclure_taxref']);
|
Line 619... |
Line 619... |
619 |
/**
|
619 |
/**
|
620 |
* Test #21
|
620 |
* Test #21
|
621 |
*/
|
621 |
*/
|
622 |
private function testerNomCompletEspece() {
|
622 |
private function testerNomCompletEspece() {
|
623 |
$noms_erreur = array();
|
623 |
$noms_erreur = array();
|
- |
|
624 |
$erreur = '';
|
624 |
foreach ($this->noms as &$nom) {
|
625 |
foreach ($this->noms as &$nom) {
|
625 |
if ($nom['rang'] == $this->manuel['rang_sp']) {
|
626 |
if ($nom['rang'] == $this->manuel['rang_sp']) {
|
626 |
$suffixe_plte_cultivee = $this->construireSuffixeNomPltCultivee($nom);
|
627 |
$suffixe_plte_cultivee = $this->construireSuffixeNomPltCultivee($nom);
|
627 |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']);
|
628 |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' ';
|
628 |
$nom_sci_ideal .= (preg_match('/^(.+)\s+([x+])\s+(.+)$/i', $nom['epithete_sp'], $match) != '' ?
|
629 |
if (strstr($nom['nom_sci'] , ' x ') != false) {
|
629 |
' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[1])))).' '.utf8_encode(strtolower(utf8_decode($match[2]))).
|
630 |
list($nom_sci_ideal, $erreur) = $this->formaterStyleEpitheteSpHybride($nom_sci_ideal, $nom['epithete_sp']);
|
630 |
' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[3])))) :
|
631 |
} else {
|
631 |
' '.utf8_encode(strtolower(utf8_decode($nom['epithete_sp']))));
|
632 |
$nom_sci_ideal .= utf8_encode(strtolower(utf8_decode($nom['epithete_sp'])));
|
- |
|
633 |
}
|
632 |
$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : '');
|
634 |
$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : '');
|
633 |
$nom_sci_ideal = trim($nom_sci_ideal);
|
635 |
$nom_sci_ideal = trim($nom_sci_ideal);
|
634 |
if ($nom['nom_sci'] != $nom_sci_ideal) {
|
636 |
if ($nom['nom_sci'] != $nom_sci_ideal) {
|
635 |
$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
|
637 |
$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
|
636 |
$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $nom['exclure_taxref']);
|
638 |
$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $erreur, $nom['exclure_taxref']);
|
637 |
}
|
639 |
}
|
638 |
}
|
640 |
}
|
639 |
}
|
641 |
}
|
640 |
return $noms_erreur;
|
642 |
return $noms_erreur;
|
641 |
}
|
643 |
}
|
Line 645... |
Line 647... |
645 |
*/
|
647 |
*/
|
646 |
private function testerNomCompletInfraSpecifique() {
|
648 |
private function testerNomCompletInfraSpecifique() {
|
647 |
$noms_erreur = array();
|
649 |
$noms_erreur = array();
|
648 |
foreach ($this->noms as &$nom) {
|
650 |
foreach ($this->noms as &$nom) {
|
649 |
if ($nom['rang'] > $this->manuel['rang_sp']) {
|
651 |
if ($nom['rang'] > $this->manuel['rang_sp']) {
|
- |
|
652 |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']).' '.
|
- |
|
653 |
utf8_encode(strtolower(utf8_decode($nom['epithete_sp']))).' '.
|
- |
|
654 |
utf8_encode(strtolower(utf8_decode($nom['type_epithete']))).' ';
|
650 |
$suffixe_plte_cultivee = $this->construireSuffixeNomPltCultivee($nom);
|
655 |
$suffixe_plte_cultivee = $this->construireSuffixeNomPltCultivee($nom);
|
651 |
$nom_sci_ideal = $this->formaterStyleNomGenre($nom['genre']);
|
656 |
if (strstr($nom['nom_sci'] , ' x ') != false) {
|
652 |
$nom_sci_ideal .= ' '.utf8_encode(strtolower(utf8_decode($nom['epithete_sp'])));
|
- |
|
653 |
$nom_sci_ideal .= ' '.utf8_encode(strtolower(utf8_decode($nom['type_epithete'])));
|
- |
|
654 |
$nom_sci_ideal .= (preg_match('/^(.+)\s+([x+])\s+(.+)$/i', $nom['epithete_infra_sp'], $match) != '' ?
|
657 |
list($nom_sci_ideal, $erreur) = $this->formaterStyleEpitheteInfraSpHybride($nom_sci_ideal, $nom['epithete_infra_sp'], $nom['genre']);
|
655 |
' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[1])))).' '.utf8_encode(strtolower(utf8_decode($match[2]))).
|
- |
|
656 |
' '.utf8_encode(ucfirst(strtolower(utf8_decode($match[3])))) :
|
658 |
} else {
|
657 |
' '.utf8_encode(strtolower(utf8_decode($nom['epithete_infra_sp']))));
|
659 |
$nom_sci_ideal .= utf8_encode(strtolower(utf8_decode($nom['epithete_infra_sp'])));
|
658 |
$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : '');
|
- |
|
- |
|
660 |
}
|
659 |
$nom_sci_ideal = trim($nom_sci_ideal);
|
661 |
$nom_sci_ideal = trim($nom_sci_ideal);
|
- |
|
662 |
$nom_sci_ideal .= ($suffixe_plte_cultivee != '' ? ' '.$suffixe_plte_cultivee : '');
|
660 |
if ($nom['nom_sci'] != $nom_sci_ideal) {
|
663 |
if ($nom['nom_sci'] != $nom_sci_ideal) {
|
661 |
$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
|
664 |
$nom_sci_traite = $this->repererEspace($nom['nom_sci']);
|
662 |
$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $nom['exclure_taxref']);
|
665 |
$noms_erreur[] = array($nom['num_nom'], $nom_sci_traite, $nom_sci_ideal, $erreur, $nom['exclure_taxref']);
|
663 |
}
|
666 |
}
|
664 |
}
|
667 |
}
|
665 |
}
|
668 |
}
|
666 |
return $noms_erreur;
|
669 |
return $noms_erreur;
|
667 |
}
|
670 |
}
|
Line 1634... |
Line 1637... |
1634 |
$genre_fmt = utf8_encode(ucfirst(strtolower(utf8_decode($genre))));
|
1637 |
$genre_fmt = utf8_encode(ucfirst(strtolower(utf8_decode($genre))));
|
1635 |
}
|
1638 |
}
|
1636 |
return $genre_fmt;
|
1639 |
return $genre_fmt;
|
1637 |
}
|
1640 |
}
|
Line -... |
Line 1641... |
- |
|
1641 |
|
- |
|
1642 |
private function formaterStyleEpitheteSpHybride(&$genre, &$epithete) {
|
- |
|
1643 |
$nom_fmt = '';
|
- |
|
1644 |
$erreur = '';
|
- |
|
1645 |
if (trim($genre) == '') {
|
- |
|
1646 |
if ($epithete != '') {
|
- |
|
1647 |
$nom_fmt = $this->formaterFormuleHybridite($epithete);
|
- |
|
1648 |
} else {
|
- |
|
1649 |
$erreur = "Formule d'hybridité sans épithéte spécifique";
|
- |
|
1650 |
}
|
- |
|
1651 |
} else {
|
- |
|
1652 |
$nom_fmt = $this->formaterNomHybride($genre, $epithete);
|
- |
|
1653 |
}
|
- |
|
1654 |
return array($nom_fmt, $erreur);
|
- |
|
1655 |
}
|
- |
|
1656 |
|
- |
|
1657 |
private function formaterStyleEpitheteInfraSpHybride(&$nom_sci, &$infra, &$genre = null) {
|
- |
|
1658 |
$nom_fmt = '';
|
- |
|
1659 |
$erreur = '';
|
- |
|
1660 |
if (trim($genre) == '') {
|
- |
|
1661 |
if (trim($nom_sci) == '') {
|
- |
|
1662 |
if (trim($infra) != '') {
|
- |
|
1663 |
$nom_fmt = $this->formaterFormuleHybridite($infra);
|
- |
|
1664 |
} else {
|
- |
|
1665 |
$erreur = "Formule d'hybridité sans épithéte infraspécifique";
|
- |
|
1666 |
}
|
- |
|
1667 |
} else {
|
- |
|
1668 |
$erreur = "Formule d'hybridité avec épithéte spécifique";
|
- |
|
1669 |
}
|
- |
|
1670 |
} else {
|
- |
|
1671 |
$nom_fmt = $this->formaterNomHybride($nom_sci, $infra);
|
- |
|
1672 |
}
|
- |
|
1673 |
return array($nom_fmt, $erreur);
|
- |
|
1674 |
}
|
- |
|
1675 |
|
- |
|
1676 |
private function formaterNomHybride(&$nom_sci, &$epithete) {
|
- |
|
1677 |
if (preg_match('/^(.+)\s+([x+])\s+(.+)$/i', $epithete, $match) != '') {
|
- |
|
1678 |
$nom_fmt = $nom_sci.utf8_encode(ucfirst(strtolower(utf8_decode($match[1])))).' '.
|
- |
|
1679 |
utf8_encode(strtolower(utf8_decode($match[2]))).' '.
|
- |
|
1680 |
utf8_encode(ucfirst(strtolower(utf8_decode($match[3]))));
|
- |
|
1681 |
} elseif (preg_match('/^([x+])\s+(.+)$/i', $epithete, $match) != '') {
|
- |
|
1682 |
$nom_fmt = $nom_sci.utf8_encode(strtolower(utf8_decode($match[1]))).' '.
|
- |
|
1683 |
utf8_encode(strtolower(utf8_decode($match[2])));
|
- |
|
1684 |
} else {
|
- |
|
1685 |
$nom_fmt = $nom_sci.utf8_encode(strtolower(utf8_decode($epithete)));
|
- |
|
1686 |
}
|
- |
|
1687 |
return $nom_fmt;
|
- |
|
1688 |
}
|
- |
|
1689 |
|
- |
|
1690 |
private function formaterFormuleHybridite(&$epithete) {
|
- |
|
1691 |
$liste_parents = explode(' x ', $epithete);
|
- |
|
1692 |
if (count($liste_parents) == 2) {
|
- |
|
1693 |
$nom_fmt = utf8_encode(ucfirst(strtolower(utf8_decode($liste_parents[0])))).' x '.
|
- |
|
1694 |
utf8_encode(ucfirst(strtolower(utf8_decode($liste_parents[1]))));
|
- |
|
1695 |
} else {
|
- |
|
1696 |
for ($i=0; $i<count($liste_parents); $i++) {
|
- |
|
1697 |
if (strstr(trim($liste_parents[$i]), ' ') == false) {
|
- |
|
1698 |
$nom[] = utf8_encode(ucfirst(strtolower(utf8_decode(trim($liste_parents[$i]))))).' x '.
|
- |
|
1699 |
utf8_encode(strtolower(utf8_decode(trim($liste_parents[$i+1]))));
|
- |
|
1700 |
$i++;
|
- |
|
1701 |
} else {
|
- |
|
1702 |
$nom[] = utf8_encode(ucfirst(strtolower(utf8_decode($liste_parents[$i]))));
|
- |
|
1703 |
}
|
- |
|
1704 |
}
|
- |
|
1705 |
$nom_fmt = implode(' x ', $nom);
|
- |
|
1706 |
}
|
- |
|
1707 |
return $nom_fmt;
|
- |
|
1708 |
}
|
1638 |
|
1709 |
|
1639 |
private function repererEspace($nom_sci) {
|
1710 |
private function repererEspace($nom_sci) {
|
1640 |
$nom_sci = str_replace(' ', '<span class="espace"> </span>', $nom_sci);
|
1711 |
$nom_sci = str_replace(' ', '<span class="espace"> </span>', $nom_sci);
|
1641 |
return $nom_sci;
|
1712 |
return $nom_sci;
|