Php 限制搜索结果的最大数量

Php 限制搜索结果的最大数量,php,Php,我将php文件链接到xml文件,并提供了许多链接。我的目标是限制在搜索框中键入时显示的最大搜索结果数。例如,只有8或10个结果。我不知道从哪里开始。我该怎么办 php文件 load(“links.xml”); $x=$xmlDoc->getElementsByTagName('link'); //从URL获取q参数 $q=$_GET[“q”]; //如果q的长度>0,则从xml文件中查找所有链接 如果(斯特伦($q)>0){ $hint=“”; 对于($i=0;$i长度);$i++){ $y=

我将php文件链接到xml文件,并提供了许多链接。我的目标是限制在搜索框中键入时显示的最大搜索结果数。例如,只有8或10个结果。我不知道从哪里开始。我该怎么办

php文件

load(“links.xml”);
$x=$xmlDoc->getElementsByTagName('link');
//从URL获取q参数
$q=$_GET[“q”];
//如果q的长度>0,则从xml文件中查找所有链接
如果(斯特伦($q)>0){
$hint=“”;
对于($i=0;$i长度);$i++){
$y=$x->item($i)->getElementsByTagName('title');
$z=$x->item($i)->getElementsByTagName('url');
如果($y->item(0)->nodeType==1){
//查找与搜索文本匹配的链接
if(stristr($y->item(0)->childNodes->item(0)->nodeValue,$q)){
如果($hint==“”){
$hint=“”;
}否则{
$hint=$hint.“
”; } } } } } //如果未找到提示,则将输出设置为“无建议” //或设置为正确的值 如果($hint==“”){ $response=“无建议”; }否则{ $response=$hint; } //输出响应 回音$应答;
?>
我对这个问题的理解是,您希望限制从搜索返回的
提示的数量。您不是要停止搜索,而是要限制输出

我所做的更改是将
$hint
转换为一个数组,然后在代码底部使用
数组\u slice
从第一个位置开始,并返回
$amountToShow
。将元素添加到
$hint
是使用
sprintf
完成的,这纯粹是为了可读性

<?php

$xmlDoc = new DOMDocument();
$xmlDoc->load("links.xml");

$x = $xmlDoc->getElementsByTagName('link');

//get the q parameter from URL
$q = $_GET["q"];
$hint = [];

//lookup all links from the xml file if length of q>0
if (strlen($q) > 0) {
    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)) {
                $hint[] = sprintf(
                    "<a href='%s' target='_blank'>%s</a>",
                    $z->item(0)->childNodes->item(0)->nodeValue,
                    $y->item(0)->childNodes->item(0)->nodeValue
                );
            }
        }
    }
}

// Set output to "no suggestion" if no hint was found
// or to the correct values
$amountToShow = 10;
if (count($hint) == 0) {
    echo "no suggestion";
} else {
    echo implode("", array_slice($hint, 0, $amountToShow));
}
load(“links.xml”);
$x=$xmlDoc->getElementsByTagName('link');
//从URL获取q参数
$q=$_GET[“q”];
$hint=[];
//如果q的长度>0,则从xml文件中查找所有链接
如果(斯特伦($q)>0){
对于($i=0;$i<($x->length);$i++){
$y=$x->item($i)->getElementsByTagName('title');
$z=$x->item($i)->getElementsByTagName('url');
如果($y->item(0)->nodeType==1){
//查找与搜索文本匹配的链接
if(stristr($y->item(0)->childNodes->item(0)->nodeValue,$q)){
$hint[]=sprintf(
"",
$z->item(0)->childNodes->item(0)->nodeValue,
$y->item(0)->childNodes->item(0)->nodeValue
);
}
}
}
}
//如果未找到提示,则将输出设置为“无建议”
//或设置为正确的值
$amountToShow=10;
如果(计数($hint)==0){
回应“没有建议”;
}否则{
回波内爆(“,数组_切片($hint,0,$amountToShow));
}

添加一个计数器变量。增加从xml文件读取的每个链接的值。当你到达8(或10)个链接时,停止阅读文件的结果。谢谢@Phaelax z。你的意思是编辑上面的php代码吗?还是应该将这些计数器变量添加到xml?。请给我看看好吗?。我是新来的。非常感谢你@hppycoder,简单明了。它已经解决了。祝福你。