Votre campagne ici    
Nous sommes le vendredi 29 août 2008    


Accueil
Accueil





Accueil  Les scripts  MySQL  
Mise en ligne : lundi 29 mai 2006    
Par : CladX    

Script permettant la recherche de mots clefs dans la base de données sans tenir compte de l’accentuation.

<?php

// ------------------------------------------------------------------------- //
// Petit moteur de recherche.                                                //
// ------------------------------------------------------------------------- //
// Auteur: Frédéric Bouchery                                                 //
// Email:  frederic.bouchery@consultant.com                                  //
// Web:    http://www.cybergroupe.net/                                       //
// ------------------------------------------------------------------------- //
// Voici une petite fonction qui peut beaucoup vous aider. Elle prend en     //
// paramètre :                                                               //
//   - La chaîne de recherche (mots séparés par des espaces ou toute         //
//     ponctuation [cf : la ligne sur les ponctuations]),                    //
//   - le nom du champ Ã  rechercher dans la table<BR>- Mettre "true" ou pas  //
//     de paramètre pour une recherche en "OU", et "false" pour une          //
//     recherche en "ET".                                                    //
// ------------------------------------------------------------------------- //

// 1) On recherche TOUS les messages qui contiennent TOUS les mots cités sans 
//    prendre en compte les accents (pratique pour les mots mal orthographiés) : 

$search Convert4Search('message','php script apache mysql',false); 
$result mysql_query("SELECT * FROM messages WHERE $search"); 

// 2) Là on recherche les messages qui contiennent au moins un des mots : 

$search Convert4Search('message','php scrîpt apache mysql'); 
$result mysql_query("SELECT * FROM messages WHERE $search"); 


// -------- Voici la fonction ----------- 

function Convert4Search($chaine$champ$ou true) { 
  
  
$chaine trim(strtolower($chaine)); 
  
  
// Vous mettez les ponctuations et caractères que vous ne voulez pas 
  
$chaine ereg_replace('[\'"!?,;:]',' ',$chaine); 
 
  
// Conversion des caractères accentués 
  
$chaine ereg_replace('[aàáâãäå]','[aàáâãäå]',$chaine); 
  
$chaine ereg_replace('[oòóôõöø]','[oòóôõöø]',$chaine); 
  
$chaine ereg_replace('[eèéêë]','[eèéêë]',$chaine); 
  
$chaine ereg_replace('[cç]','[cç]',$chaine); 
  
$chaine ereg_replace('[iìíîï]','[iìíîï]',$chaine); 
  
$chaine ereg_replace('[uùúûü]','[uùúûü]',$chaine); 
  
$chaine ereg_replace('[yÿ]','[yÿ]',$chaine); 
  
$chaine ereg_replace('[nñ]','[nñ]',$chaine); 
  
  if (
$ou) {
    
// C'est une recherche en "OU" 
    
$chaine  "LCASE($champ) REGEXP '";
    
$chaine .= ereg_replace('([^ ]*)([ ]*)([^ ]+)','\\1|\\3',$chaine)."'"
  } else {
    
// C'est une recherche en "ET" 
    
$chaine ereg_replace('[ ]*([^ ]+)[ ]*'"LCASE($champ) REGEXP ('\\1') AND ",
                           
$chaine); 
    
$chaine ereg_replace(' AND $','',$chaine); 
  }

  return 
$chaine


?>


--- Réagir à cet article ---