<?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;

}