| 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;
|