2009-10-13 6 views
1

À la minute j'ai une page avec un script AJAX qui recherche une base de données avec '% terme de recherche LIKE de la boîte de saisie%'. J'ai besoin de le modifier pour que, au lieu de chercher dans la base de données, il cherche un tableau (construit à partir de deux tables - je ne peux pas utiliser un JOIN parce qu'il y a un peu plus).La fonctionnalité LIKE de Mirror SQL pour un tableau PHP?

Comment créer une fonction de recherche floue en PHP qui retournera toutes les correspondances possibles du tableau?

Répondre

8

vous voulez preg_grep

par exemple

$arr = array("tom jones", "tom smith", "bob jones", "jon smith"); 
$results = preg_grep("/jones/",$arr); 

$results va maintenant contenir deux éléments, "tom jones" et "bob jones"

+1

Bonne solution! Mais $ results = preg_grep ("% jones%", $ arr); Je voudrais en fait un peu plus LIKEly;) – powtac

+0

Je veux en effet preg_grep, merci =) – bcmcfc

2

vous pourriez créer une boucle un peu plus le tableau et utiliser strpos pour trouver les éléments correspondants

foreach($arr as $value) { 
    if (strpos($value, 'searchterm') !== FALSE) { 
     // Match 
    } 
} 

Vous pouvez utiliser une expression régulière recherche plus avancée, mais les strpos seront plus rapides si vous essayez simplement de faire une simple recherche de type LIKE '% term%'.

+0

cela ne récursera pas récursivement sur un tableau multi-dimensionnel, cependant. –

+0

sauf que cela échouerait pour les caractères génériques au milieu, par exemple. comme% dav% d% –

Questions connexes