2009-10-13 56 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