建议在PHP中搜索数组中字符串的有效方法
我正在使用jQuery自动完成,下面是我的代码 prg1_view.php建议在PHP中搜索数组中字符串的有效方法,php,preg-match,Php,Preg Match,我正在使用jQuery自动完成,下面是我的代码 prg1_view.php <div id="j_autocomplete"> <label>Search</label><input id="search" type="text"> </div> $( "#search" ).autocomplete({ source: "prg1.php" }); $q = strtolower($_GET['term']); $q =
<div id="j_autocomplete">
<label>Search</label><input id="search" type="text">
</div>
$( "#search" ).autocomplete({
source: "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);
当我尝试搜索苹果时,苹果和菠萝都出现了,预期的结果是我得到了,但有没有其他更好的方法来实现这一点?对于这种难以置信的基本字符串匹配,最好使用一个简单的
if (strpos($q, $value) !== FALSE) {
array_push(...);
}
节省你的正则表达式开销。当然,如果您只需要与数组的内容精确匹配,而不需要子字符串,那么还有更好的方法,例如in_array()
如果您坚持使用正则表达式,那么请改用,这将完成您在没有循环的情况下所做的工作:
$matches = preg_grep('/'. preg_quote($_GET['term']) . '/', $arr1);
echo json_encode($matches);
对于这种难以置信的基本字符串匹配,最好使用一个简单的
if (strpos($q, $value) !== FALSE) {
array_push(...);
}
节省你的正则表达式开销。当然,如果您只需要与数组的内容精确匹配,而不需要子字符串,那么还有更好的方法,例如in_array()
如果您坚持使用正则表达式,那么请改用,这将完成您在没有循环的情况下所做的工作:
$matches = preg_grep('/'. preg_quote($_GET['term']) . '/', $arr1);
echo json_encode($matches);