Rechercher sans s'occuper des accents

Soyez le premier à donner votre avis sur cette source.

Vue 5 843 fois - Téléchargée 356 fois

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 / Exemple :


//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+

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
21
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.
Messages postés
1267
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
29 juin 2010
1
Lu, ce serait peut etre l'inverse ! Tu as quel version presisement ? ( <?php echo phpversion(); ?> )
Messages postés
6
Date d'inscription
vendredi 17 décembre 2004
Statut
Membre
Dernière intervention
25 mai 2007

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 ?
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
21
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.
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
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...
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.