在那一刻我有一个AJAX脚本的页面,它使用LIKE'%search term from input box%'搜索数据库。为SQL数组提供镜像SQL的LIKE功能?
我需要对其进行修改,以便不搜索数据库,而是搜索一个数组(该数组已从两个表构建 - 我不能使用JOIN,因为它比它多一点)。
我该如何着手在PHP中创建一个模糊搜索函数,它将返回数组中所有可能的匹配项?
在那一刻我有一个AJAX脚本的页面,它使用LIKE'%search term from input box%'搜索数据库。为SQL数组提供镜像SQL的LIKE功能?
我需要对其进行修改,以便不搜索数据库,而是搜索一个数组(该数组已从两个表构建 - 我不能使用JOIN,因为它比它多一点)。
我该如何着手在PHP中创建一个模糊搜索函数,它将返回数组中所有可能的匹配项?
例如,
$arr = array("tom jones", "tom smith", "bob jones", "jon smith");
$results = preg_grep("/jones/",$arr);
$results
现在将包含两个元素,"tom jones"
和"bob jones"
你可以在阵列上只是循环和使用strpos找到匹配的元素
foreach($arr as $value) {
if (strpos($value, 'searchterm') !== FALSE) {
// Match
}
}
您可以使用正则表达式更高级的搜索,但如果您只是试图执行简单的LIKE'%term%'类型搜索,则strpos会更快。
但是,这不会递归地遍历多维数组。除了中间的通配符将失败,例如 – 2009-10-13 11:10:59
。像%dav%d% – 2009-10-13 11:11:30
好的解决方案!但$ results = preg_grep(“%jones%”,$ arr);会更像LIKEly;) – powtac 2009-10-13 11:21:08
我确实希望preg_grep,thank-you =) – bcmcfc 2009-10-13 11:24:37