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

cs_tweeder 172 Messages postés jeudi 30 janvier 2003Date d'inscription 19 juin 2009 Dernière intervention - 11 nov. 2005 à 15:21 - Dernière réponse : cs_tweeder 172 Messages postés jeudi 30 janvier 2003Date d'inscription 19 juin 2009 Dernière intervention
- 11 nov. 2005 à 17:48
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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cs_Anthomicro 9440 Messages postés mardi 9 octobre 2001Date d'inscription 13 avril 2007 Dernière intervention - 11 nov. 2005 à 17:43
3
Merci
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.

Merci cs_Anthomicro 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de cs_Anthomicro
cs_Anthomicro 9440 Messages postés mardi 9 octobre 2001Date d'inscription 13 avril 2007 Dernière intervention - 11 nov. 2005 à 15:54
0
Merci
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 ?

Commenter la réponse de cs_Anthomicro
FhX 2368 Messages postés mercredi 13 octobre 2004Date d'inscription 18 avril 2015 Dernière intervention - 11 nov. 2005 à 16:00
0
Merci
Nan je crois que ce qu'il veut, c'est savoir si un mot est contenu dans une chaine :o
Commenter la réponse de FhX
cs_tweeder 172 Messages postés jeudi 30 janvier 2003Date d'inscription 19 juin 2009 Dernière intervention - 11 nov. 2005 à 16:03
0
Merci
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
Commenter la réponse de cs_tweeder
cs_Anthomicro 9440 Messages postés mardi 9 octobre 2001Date d'inscription 13 avril 2007 Dernière intervention - 11 nov. 2005 à 16:22
0
Merci
bah



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



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

{

//ok

}

Commenter la réponse de cs_Anthomicro
cs_tweeder 172 Messages postés jeudi 30 janvier 2003Date d'inscription 19 juin 2009 Dernière intervention - 11 nov. 2005 à 17:36
0
Merci
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
Commenter la réponse de cs_tweeder
cs_tweeder 172 Messages postés jeudi 30 janvier 2003Date d'inscription 19 juin 2009 Dernière intervention - 11 nov. 2005 à 17:48
0
Merci
Ok merci Antho, je vais donc faire des recherches pour voir si je ne retrouverais pas cette source.

Jonathan
Commenter la réponse de cs_tweeder

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.