begin process at 2012 02 11 00:59:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Base de données

 > RECHERCHER SANS S'OCCUPER DES ACCENTS

RECHERCHER SANS S'OCCUPER DES ACCENTS


 Information sur la source

Note :
6,5 / 10 - par 2 personnes
6,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Base de données Niveau :Débutant Date de création :31/03/2005 Date de mise à jour :31/03/2005 21:30:10 Vu / téléchargé :4 861 / 264

Auteur : micmonay

Ecrire un message privé
Site perso
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Cette fonction vous permet de rechercher dans une chaine de caractere un mot comme dédé ou dede ou déde sens prendre en compte les accens et la case et metre devant et derriere le mot se que vous voulez (pour metre en gras par exemple: str_implante(la chaine,le mot,<b>,</b>))

ex:je cherche dede dans une chaine de caractères "Salut Dédé. Comment vas tu Dédé" la fonction vous renvera "Salut <b>Dédé</b>. Comment vas tu <b>Dédé</b>" si la fonction et configurée de manière a metre <b> au debut et </b> à la fin.

Je n'est maleureusement pas commenter la fonction car je n'es pas le temp pour le moment dsl

Attention: il y a une autre fonction qui doit rester pour que cette fonction marche c'est la fonction removeaccents qui permet d'enlever les accens.

Source

  • //fonction pour enlever les accens
  • function removeaccents($text)
  • {
  • return strtr($text,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
  • }
  • //Je crée une fonction qui met $impstart au debut de $cherche et $impend a la fin dans la chène $string meme si il y en n'as plusieur
  • function str_implante($string,$cherche,$impstart,$impend)
  • {
  • $cherche_txt_filtre=removeaccents(strtolower($cherche));
  • $string_txt_filtre=removeaccents(strtolower($string));
  • $impstart_long=strlen($impstart);
  • $impend_long=strlen($impend);
  • $cherche_long=strlen($cherche_txt_filtre);
  • if(ereg("$cherche_txt_filtre","$string_txt_filtre"))
  • {
  • while($endwhile!=1)
  • {
  • $debut_mot=strpos($string_txt_filtre,$cherche_txt_filtre);
  • $fin_mot=$cherche_long;
  • $string_suite=substr("$string",$debut_mot);
  • $string_fin=$cherche_long+$debut_mot;
  • $string_fin_txt=substr("$string",$string_fin);
  • $string_filtre_fin_txt=substr("$string_txt_filtre",$string_fin);
  • //remplace les caractères trouver par une forme spécial (gras)
  • $text_trouver_debut = substr_replace("$string","$impstart",$debut_mot);
  • $text_trouver_fin = substr_replace("$string_suite","$impend",$fin_mot);
  • $array_txt=array($txt,$text_trouver_debut,$text_trouver_fin);
  • $txt=implode("",$array_txt);
  • $string=$string_fin_txt;
  • $string_txt_filtre=$string_filtre_fin_txt;
  • if(!ereg("$cherche_txt_filtre","$string_txt_filtre"))
  • {
  • $endwhile=1;
  • }
  • }
  • $array_txt2=array($txt,$string_fin_txt);
  • $txt=implode("",$array_txt2);
  • return $txt;
  • }
  • }
//fonction pour enlever les accens
function removeaccents($text)
	{  
    return strtr($text,"ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ","AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn");
   	}
//Je crée une fonction qui met $impstart au debut de $cherche et $impend a la fin dans la chène $string meme si il y en n'as plusieur
function str_implante($string,$cherche,$impstart,$impend)
{
	$cherche_txt_filtre=removeaccents(strtolower($cherche));
	$string_txt_filtre=removeaccents(strtolower($string));
	$impstart_long=strlen($impstart);
	$impend_long=strlen($impend);
	$cherche_long=strlen($cherche_txt_filtre);
	if(ereg("$cherche_txt_filtre","$string_txt_filtre"))
		{
		while($endwhile!=1)
			{
			$debut_mot=strpos($string_txt_filtre,$cherche_txt_filtre);
			$fin_mot=$cherche_long;
			$string_suite=substr("$string",$debut_mot);
			$string_fin=$cherche_long+$debut_mot;
			$string_fin_txt=substr("$string",$string_fin);
			$string_filtre_fin_txt=substr("$string_txt_filtre",$string_fin);
			//remplace les caractères trouver par une forme spécial (gras)
			$text_trouver_debut = substr_replace("$string","$impstart",$debut_mot);
			$text_trouver_fin = substr_replace("$string_suite","$impend",$fin_mot);
			$array_txt=array($txt,$text_trouver_debut,$text_trouver_fin);
			$txt=implode("",$array_txt);
			$string=$string_fin_txt;
			$string_txt_filtre=$string_filtre_fin_txt;
			if(!ereg("$cherche_txt_filtre","$string_txt_filtre"))
				{
				$endwhile=1;
				}
			}
			$array_txt2=array($txt,$string_fin_txt);
			$txt=implode("",$array_txt2);
			return $txt;
		}
}

 Conclusion

Elle est très utile pour les recherches surtout quand vous demander à mysql de faire une recherche avec "table LIKE '%dédé%'". mysql vous ressortira tous les enregistrements qui contienne dede ou dédé ;-).

A+

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

31 mars 2005 21:15:28 :
31 mars 2005 21:16:20 :
31 mars 2005 21:30:10 :

 Sources du même auteur

PARCOURIR UN RÉPERTOIRE ET SES SOUS SOUS SOUS... RÉPERTOIRE ...

 Sources de la même categorie

Source avec Zip RECHERCHE DES DOUBLONS DANS UNE TABLE MYSQL EN SÉLECTIONNANT... par aladec2007
[CRON] INSERT ON DUPLICATE KEY UPDATE par pierreSabatier
Source avec Zip CLASS MYSQL 5/PHP5 AVEC GESTION DES EXCEPTION ET DES REQUÊTE... par devil_may_cry
Source avec Zip Source avec une capture MOTEUR DE RECHERCHE SUR BASE MYSQL FULLTEXT ET BOOLEAN AVEC ... par cod57
SYSTÈME DE PAGINATION AVEC BDD ET IMAGES (FICHIERS) par begueradj

Commentaires et avis

Commentaire de JoJo738 le 31/03/2005 21:36:05

Bonsoir,
Tu peux optimiser. Les "$var" sont inutiles, $var est bon !
  ereg($cherche_txt_filtre, $string_txt_filtre)
  substr($string, $debut_mot);
  ...
Et priviligie les ' aux "
  $txt=implode('', $array_txt2);

Commentaire de malalam le 01/04/2005 10:10:41 administrateur CS

Hello,

il y a deux erreurs dans ton script :
- $endwhile n'est pas defini au premier passage de la boucle (il faut donc l'initialiser avant).
- $txt n'existe pas non plus alors que tu l'utilises dans ton while(), il n'existe qu 'apres ce while(). Il faut aussi l'initialiser  au debut de ta fonction.

Sinon ca marche bien, mais ca merite d'etre optimise je pense :-)
En fait, a mon sens, toute ta fonction de recherche 7 remplacement peut etre largement raccourcie avec un str_replace tout bete.  

Commentaire de micmonay le 01/04/2005 18:49:09

Alors je ne savais pas quand php il falait déclarer les variables vu que sa marche très bien sens. Pour la fonction str_replace elle prend les accens et la case.
si je remplace avec str_replace Dede en recherchant dede s'est dede qui sera en gras et si je recherche Dédé il me trouvera rien.
En bref ma fonction sert à ne pas toucher au text d'origine mais a y ajouter ou il faut les arguments $impstart et $impend.

Ps: Si j'ai mal comprit vaux remarque dite le moi ;-)

Commentaire de coucou747 le 01/04/2005 19:29:47 administrateur CS

sens définit ce que veulent dire les mots par exemple...

rechercher sans s'occuper des accents...

je trouves ton script marrant, mais à mon avis, on peut faire vraiment plus simple en passant par des exp_reg...

Commentaire de malalam le 02/04/2005 17:07:24 administrateur CS

Bah non, pas en reflechissant un peu...crois moi.
Et non...enfin si, ca marche, mais si tu n'as pas d'erreur c'est sans doute que tu as l'error_reporting qui n'est pas bien configure. MOi j'ai tout plein d'erreurs avec ton script. Enfin 2, lol, les 2 que je t'ai indiquees.

Commentaire de micmonay le 07/04/2005 18:39:42

S'est interessent ses erreurs dont tu me parle car moi sur mon pc je n'est rien et pourtant il me marque toute les autres erreurs qu'il peut y avoir . Et dans ma doc rien n'est dit sur la déclaration de variable.
Moi j'ai PHP4. tu as peut-etre une ancienne version ?

Commentaire de JoJo738 le 07/04/2005 19:03:36

Lu, ce serait peut etre l'inverse ! Tu as quel version presisement ? ( <?php echo phpversion(); ?> )

Commentaire de malalam le 08/04/2005 08:54:19 administrateur CS

Hello,

heu oui, plutot...parce que c'est pareil avec php4, ou 5.
Le principe est simple de toutes facons : je ne pense pas que dans une seule version de php (meme la 3, mais je peux me tromper, ca fait longtemps...) on puisse utiliser une variable AVANT qu'elle ait ete declaree. Manquerait plus que ca...

Tu es sur de ton error_reporting ?
Mets ca au debut de ton code :
error_reporting(E_ALL);
et relance le.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,260 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales