2009-10-13 58 views
1

在那一刻我有一个AJAX脚本的页面,它使用LIKE'%search term from input box%'搜索数据库。为SQL数组提供镜像SQL的LIKE功能?

我需要对其进行修改,以便不搜索数据库,而是搜索一个数组(该数组已从两个表构建 - 我不能使用JOIN,因为它比它多一点)。

我该如何着手在PHP中创建一个模糊搜索函数,它将返回数组中所有可能的匹配项?

回答

8

想要preg_grep

例如,

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

$results现在将包含两个元素,"tom jones""bob jones"

+1

好的解决方案!但$ results = preg_grep(“%jones%”,$ arr);会更像LIKEly;) – powtac 2009-10-13 11:21:08

+0

我确实希望preg_grep,thank-you =) – bcmcfc 2009-10-13 11:24:37

2

你可以在阵列上只是循环和使用strpos找到匹配的元素

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

您可以使用正则表达式更高级的搜索,但如果您只是试图执行简单的LIKE'%term%'类型搜索,则strpos会更快。

+0

但是,这不会递归地遍历多维数组。除了中间的通配符将失败,例如 – 2009-10-13 11:10:59

+0

。像%dav%d% – 2009-10-13 11:11:30