Line 85... |
Line 85... |
85 |
$nom_saisi = trim($nom_saisi);
|
85 |
$nom_saisi = trim($nom_saisi);
|
86 |
// Essai de recherche sur le nom saisi tel quel
|
86 |
// Essai de recherche sur le nom saisi tel quel
|
87 |
$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi, true);
|
87 |
$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi, true);
|
88 |
if(empty($liste_genre_espece)) {
|
88 |
if(empty($liste_genre_espece)) {
|
89 |
// Essai de recherche stricte en tentant de supprimer le nom d'auteur
|
89 |
// Essai de recherche stricte en tentant de supprimer le nom d'auteur
|
90 |
$nom_saisi_sans_auteur = $this->supprimerAuteur($nom_saisi);
|
90 |
$nom_saisi_sans_auteur = self::supprimerAuteur($nom_saisi);
|
91 |
if($nom_saisi_sans_auteur) { // ne pas faire la requête sur un mot vide
|
91 |
if($nom_saisi_sans_auteur) { // ne pas faire la requête sur un mot vide
|
92 |
$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi_sans_auteur, true);
|
92 |
$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi_sans_auteur, true);
|
93 |
}
|
93 |
}
|
94 |
if(empty($liste_genre_espece)) {
|
94 |
if(empty($liste_genre_espece)) {
|
95 |
// Dernière tentative : essai de recherche étendue
|
95 |
// Dernière tentative : essai de recherche étendue
|
Line 108... |
Line 108... |
108 |
if(!$res) return NULL;
|
108 |
if(!$res) return NULL;
|
109 |
$resultat = (array)$res->resultat;
|
109 |
$resultat = (array)$res->resultat;
|
110 |
return array_pop($resultat);
|
110 |
return array_pop($resultat);
|
111 |
}
|
111 |
}
|
Line 112... |
Line 112... |
112 |
|
112 |
|
113 |
private function supprimerAuteur($nom_saisi) {
|
- |
|
114 |
// Attention le parseur de nom n'est pas fiable à 100%
|
- |
|
115 |
// mais ça marche dans la plupart des cas
|
- |
|
116 |
// à part les formules d'hybridité saisies avec un auteur
|
113 |
static function supprimerAuteur($nom_saisi) {
|
117 |
// TODO: gérer les hybrides
|
- |
|
118 |
$nameparser = new NameParser();
|
114 |
// TODO: gérer les hybrides
|
119 |
if($this->estUnHybride($nom_saisi) || $this->estUneFormuleHybridite($nom_saisi)) {
|
115 |
if(self::estUnHybride($nom_saisi) || self::estUneFormuleHybridite($nom_saisi)) {
|
120 |
$nom_decoupe = explode(' ', $nom_saisi);
|
116 |
$nom_decoupe = explode(' ', $nom_saisi);
|
121 |
$derniere_position_hybride = end(array_keys($nom_decoupe, 'x'));
|
117 |
$derniere_position_hybride = end(array_keys($nom_decoupe, 'x'));
|
122 |
$nom_saisi_sans_auteur = implode(' ',array_slice($nom_decoupe, 0, $derniere_position_hybride + 2));
|
118 |
$nom_saisi_sans_auteur = implode(' ',array_slice($nom_decoupe, 0, $derniere_position_hybride + 2));
|
- |
|
119 |
} else {
|
- |
|
120 |
/* Attention le parseur de nom n'est pas fiable à 100%
|
- |
|
121 |
mais ça marche dans la plupart des cas
|
- |
|
122 |
à part les formules d'hybridité saisies avec un auteur */
|
123 |
} else {
|
123 |
$nameparser = new NameParser();
|
124 |
$auteur = $nameparser->parse_auth($nom_saisi);
|
124 |
$auteur = $nameparser->parse_auth($nom_saisi);
|
125 |
$nom_saisi_sans_auteur = str_replace($auteur, '', $nom_saisi);
|
125 |
$nom_saisi_sans_auteur = str_replace($auteur, '', $nom_saisi);
|
Line 126... |
Line -... |
126 |
}
|
- |
|
127 |
|
126 |
}
|
128 |
$nom_saisi_sans_auteur = trim($nom_saisi_sans_auteur);
|
127 |
|
Line 129... |
Line 128... |
129 |
return $nom_saisi_sans_auteur;
|
128 |
return trim($nom_saisi_sans_auteur);
|
130 |
}
|
129 |
}
|
131 |
|
130 |
|
Line 132... |
Line 131... |
132 |
private function estUneFormuleHybridite($nom_saisi) {
|
131 |
static function estUneFormuleHybridite($nom_saisi) {
|
133 |
return strpos($nom_saisi,' x ') !== false;
|
132 |
return strpos($nom_saisi,' x ') !== false;
|
134 |
}
|
133 |
}
|
Line 135... |
Line 134... |
135 |
|
134 |
|
136 |
private function estUnHybride($nom_saisi) {
|
135 |
static function estUnHybride($nom_saisi) {
|