我有一个使用这个w3school示例制作的ajax实时搜索栏。 http://www.w3schools.com/php/php_ajax_livesearch.asp
我如何才能让它只显示以第一个字母开头的相同顺序的字母结果,而不是匹配单词中任何一大块字母。例如,要显示“COMPUTER”,您必须键入“COM ...”而不是“PUTER”。
我相信我已经把它缩小到了这里的某个地方:
//get the q parameter from URL
$q=$_GET["q"];
//lookup all links from the xml file if length of q>0
if (strlen($q)>0)
{
$hint="";
for($i=0; $i<($x->length); $i++)
{
$y=$x->item($i)->getElementsByTagName('title');
$z=$x->item($i)->getElementsByTagName('url');
if ($y->item(0)->nodeType==1)
{
//find a link matching the search text
if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q))
{
if ($hint=="")
{
$hint="<a href='" .
$z->item(0)->childNodes->item(0)->nodeValue .
"' target='_blank'>" .
$y->item(0)->childNodes->item(0)->nodeValue . "</a>";
}
else
{
$hint=$hint . "<a href='" .
$z->item(0)->childNodes->item(0)->nodeValue .
"' target='_blank'>" .
$y->item(0)->childNodes->item(0)->nodeValue . "</a>";
}
}
}
}
}
答案 0 :(得分:0)
检查搜索项目的条件语法:
//find a link matching the search text
if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q))
这是在项目的任何部分进行搜索$q
,您要做的只是搜索它是否以$q
开头,因此您必须更改语法:
if (strpos(strtolower($y->item(0)->childNodes->item(0)->nodeValue), strtolower($q)) === 0)
所以现在它将搜索开头的匹配(位置=== 0)。您还注意到我在两个比较值中都使用strtolower()
,这是因为strpos()
区分大小写,而stristr()
则不区分。
您现在可以尝试更改此行并告诉我们它是否有效吗?