23,6 → 23,8 |
private $url_service_taxon = null; |
private $url_service_chorologie = null; |
|
private $masque_recherche = null; |
|
public function RechercheInfosTaxonBeta($config) { |
parent::__construct($config); |
$this->url_service_nom = $config['eflore']['url_service_nom']; |
33,9 → 35,9 |
public function rechercherGenreEspeceSurPrefixe($genre = null, $espece = null) { |
|
$liste_genre_espece = array(); |
$masque = urlencode(trim(trim($genre).' '.trim($espece,' *'))); |
$this->masque_recherche = trim(trim($genre).' '.trim($espece,' *')); |
$masque = urlencode($this->masque_recherche); |
$requete = @file_get_contents($this->url_service_nom.'?masque='.$masque.'&recherche=etendue&retour.format=min&navigation.limite=50&ns.structure=au'); |
|
if($requete != '') { |
$requete = json_decode($requete); |
if(is_object($requete) && isset($requete->resultat)) { |
55,7 → 57,7 |
} elseif($a[2] != 3 && $b[2] == 3) { |
return 1; |
} else { |
return strnatcmp($a[0], $b[0]); |
return levenshtein($this->masque_recherche, $a[0]) >= levenshtein($this->masque_recherche, $b[0]); |
} |
} |
|
71,7 → 73,7 |
} |
|
public function rechercherInformationsComplementairesSurNom($nom_saisi) { |
$nom_saisi = trim($this->supprimerAccents($nom_saisi)); |
$nom_saisi = trim($nom_saisi); |
// Essai de recherche sur le nom saisi tel quel |
$liste_genre_espece = $this->effectuerRequeteUrlRecherche($nom_saisi, true); |
if(empty($liste_genre_espece)) { |
101,18 → 103,6 |
return $url_recherche_etendue = $this->url_service_nom.'?masque='.urlencode($nom_saisi).'&recherche='.$type_recherche.'&ns.format=txt&retour.champs=nom_sci,auteur,nom_retenu.id&navigation.limite=1'; |
} |
|
//TODO: déplacer les fonctions ci dessus et dessous dans une classe |
// utilitaire |
private function supprimerAccents($str, $charset = 'UTF-8') |
{ |
$str = htmlentities($str, ENT_NOQUOTES, $charset); |
$str = preg_replace('#&([A-za-z])(?:acute|cedil|circ|grave|orn|ring|slash|th|tilde|uml);#', '\1', $str); |
$str = preg_replace('#&([A-za-z]{2})(?:lig);#', '\1', $str); // pour les ligatures e.g. 'œ' |
$str = preg_replace('#&[^;]+;#', '', $str); // supprime les autres caractères |
|
return $str; |
} |
|
private function supprimerAuteur($nom_saisi) { |
// Attention le parseur de nom n'est pas fiable à 100% |
// mais ça marche dans la plupart des cas |