Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1486 → Rev 1487

/trunk/jrest/lib/RechercheInfosTaxonBeta.php
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