Fonction semblable à LIKE (MySQL) en Php [Résolu]

Signaler
Messages postés
172
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
19 juin 2009
-
Messages postés
172
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
19 juin 2009
-
Bonjour,



Est-ce que vous pourriez me dire s'il existe une fonction qui fait le même travaille que la fonction LIKE en Mysql ?

J'ai conçu le ptit bout de code ci-dessous qui réussi à faire ce que je veux, mais je sais très bien que ce n'est pas optimisé.

Vous seriez très sympa si vous m'aidiez à l'optimiser ou si me disiez s'il existe une fonction qui fait le même boulot en php.

J'ai beau regardé sur le site et je ne trouve pas cette fonction.

Merci



//Fonction qui est appellée en premier


//Vérifie si le critère est retrouvé dans un des éléments du tableau


function contains_key( $origine, $criteres ) {


foreach ($origine as $mot) {


foreach ($criteres as $critere) {


if(
contain_key( strtoupper($mot), strtoupper( trim($critere) ) ) > 0)


return true;


}


}


return false;


}




//Semblant de la fonction LIKE en MySQL, vérifie si les mots sont semblables


function contain_key( $mot, $critere ) {


$index = 0;





for($i=0; $i< strlen($mot); $i++) {


if($mot[$i] == $critere[$index])

{


$index++;





if( $index == strlen($critere) )


return true;


}


else


$index = 0;


}


return false;


}



Jonathan

7 réponses

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
ah non dans ce cas faut faire une boucle avec des strtolower et des
strpos. je me souviens avoir répondu il y a très longtemps à un
problème de ce genre en ayant fourni du code.

Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



tu veux faire quoi en gros ?



parce que un truc WHERE champ LIKE '%machin%' OR champ LIKE '%machin2%' OR ...



ça fonctionne aussi. Tu veux faire un moteur de recherche ? tu veux faire quoi exactement ?

Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
Nan je crois que ce qu'il veut, c'est savoir si un mot est contenu dans une chaine :o
Messages postés
172
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
19 juin 2009

Désolé j'ai pas été très clair

En fait ce n'est pas sur une base de données. J'ai un tableau avec
pleins de chaines de caractères et le mot que la personne recherche
parmi toutes ces chaines.

Donc j'ai $tab = { ballon, balle, ami, fou, blabla } et le mot recherché est : ou

Je veux donc consulter tous les mots de mon tableau et vérifier s'il y en a un qui contient le chaine : ou

Jonathan
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
bah



$chaine=array('mot','mot2');



if(in_array('mot_a_rechercher',$chaine))

{

//ok

}

Messages postés
172
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
19 juin 2009

Est-ce que in_array retrouvera fou dans mon exemple ou recherche strictement le même mot (en ne prenant pas compte des majuscules et minuscules ) ?

Merci

Jonathan
Messages postés
172
Date d'inscription
jeudi 30 janvier 2003
Statut
Membre
Dernière intervention
19 juin 2009

Ok merci Antho, je vais donc faire des recherches pour voir si je ne retrouverais pas cette source.

Jonathan