2013-01-11 21 views
0
我使用 jQuery autocomplete

,下面是我的代碼建議有效的方法來搜索字符串數組在PHP

prg1_view.php

<div id="j_autocomplete"> 
<label>Search</label><input id="search" type="text"> 
</div> 
$("#search").autocomplete({ 
source: "prg1.php"  
}); 

prg1.php

$q = strtolower($_GET['term']); 
$q = '/'.$q.'/'; 

$arr1 = array('a'=> 'apple','b'=> 'boy','p'=> 'pineapple'); 
$arr2 = array(); 

foreach($arr1 as $key => $value) 
{ 
    if(preg_match($q, $value)) 
    array_push($arr2, $value); 
} 

echo json_encode($arr2); 

當我試圖搜索蘋果,b其他蘋果菠蘿正在彈出,預期的結果是我越來越,但有沒有其他更好的方法是必須實現這一點?

回答

4

對於那種令人難以置信的基本字符串匹配的,你有了一個簡單的

if (strpos($q, $value) !== FALSE) { 
    array_push(...); 
} 

更好,保存自己正則表達式的開銷。當然,如果你只需要對數組內容而不是子串進行精確匹配,還有更好的方法,比如in_array()

如果你堅持的正則表達式,然後用preg_grep代替,這確實你在做什麼,而不循環:

$matches = preg_grep('/'. preg_quote($_GET['term']) . '/', $arr1); 
echo json_encode($matches); 
+0

感謝您的寶貴回覆 –

相關問題