function sans_accent($chaine)
{
$accent ="ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ";
$noaccent="aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyyby";
return strtr(trim($chaine),$accent,$noaccent);
}
mahefarivony a dit:en faisant une recherche avec evenement, l'ideal serait que les 3 ressortent ...
mahefarivony a dit:dans sa base, il a :
événement
évènement
evenement
en faisant une recherche avec evenement, l'ideal serait que les 3 ressortent ...
c'est bien cela ?
Remi L. a dit:Je n'ai peut-être pas bien compris ta question mais il suffit de stocker les données dans ta base sans accent et d'enlever les accents du mot recherché avant de fouiller dans tes petits octets...
Pour enlever les accents tu peux utiliser un truc du genre:
Code:function sans_accent($chaine) { $accent ="ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ"; $noaccent="aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyyby"; return strtr(trim($chaine),$accent,$noaccent); }
C'est une solution ultra-simple, il y en a d'autres...
The Jedi a dit:Et actuellement ça te retourne quoi pour l'exemple avec le mot 'évènement' ?
George Abitbol a dit:Ta base de données c'est Mysql ? Quelle version ? Le type de tes champs ?
Parce que je viens encore de tester pour être sûr, et avec un champ TEXT ou VARCHAR, 'événement' ressort pour une recherche sur 'evenement', 'évenement', 'événement', 'évênëmènt', etc.
Et inversement, 'evenement' ressort pour une recherche sur 'événement', 'evénement', etc.
Fred
Fredo a dit:J'ai enfin compris que la fonction LIKE permet la recherche d'une chaîne de caractères sans tenir compte des accents
function regexAccents($chaine){
$accent =array('a','à','á','â','ã','ä','å','c','ç','e','è','é','ê','ë','i','ì','í','î','ï','o','ð','ò','ó','ô','õ','ö','u','ù','ú','û','ü','y','ý','ý','ÿ');
$inter =array('%01','%02','%03','%04','%05','%06','%07','%08','%09','%10','%11','%12','%13','%14','%15','%16','%17','%18',
'%19','%20','%21','%22','%23','%24','%25','%26','%27','%28','%29','%30','%31','%32','%33','%34','%35');
$regex=array('[aàáâãäå]','[aàáâãäå]','[aàáâãäå]','[aàáâãäå]','[aàáâãäå]','[aàáâãäå]','[aàáâãäå]',
'[cç]','[cç]',
'[eèéêë]','[eèéêë]','[eèéêë]','[eèéêë]','[eèéêë]',
'[iìíîï]','[iìíîï]','[iìíîï]','[iìíîï]','[iìíîï]',
'[oðòóôõö]','[oðòóôõö]','[oðòóôõö]','[oðòóôõö]','[oðòóôõö]','[oðòóôõö]','[oðòóôõö]',
'[uùúûü]','[uùúûü]','[uùúûü]','[uùúûü]',
'[yýýÿ]','[yýýÿ]','[yýýÿ]','[yýýÿ]');
$chaine=str_replace($accent,$inter,$chaine);
$chaine=str_replace($inter,$regex,$chaine);
return $chaine;
}
alesque a dit:Avant de les mettre sur la base, je peux changer tous les "é" en "&aecute;" ainsi que les autres caractères spéciaux mais, dans ce cas mes recherches ne fonctionnent plus...
function NoAccentFeed($text, $EncIn = 'CP1252'){
return iconv($EncIn, 'ASCII//TRANSLIT//IGNORE', $text);
}