回声结果循环

时间:2016-03-25 04:51:25

标签: php echo

我有一个使用下面脚本的html搜索框,但似乎回显输出循环或显示.txt文件的所有结果,你可以看到我正在使用fopen。我试图在echo的末尾添加exit但是无论我使用搜索框搜索到什么,它都只能获取content.txt中的第一行。我试图让它只显示搜索内容的结果。

以下是我一直在研究的代码:

<?php
$q = $_REQUEST["q"];
$f = fopen("content.txt", "r");
while (($line = fgets($f)) !== FALSE) {

    if (strstr($line, $q)) {
        echo "<li>Found $line</li>";
    } else {
        echo "<p>Nothing found.</p>";
    }

}

?>

3 个答案:

答案 0 :(得分:0)

试试这个

<?php
    $q = $_REQUEST["q"];
    $f = fopen("test.txt", "r");
    $found = false;
    while (($line = fgets($f)) !== FALSE) {
        if (strstr($line, $q)) {
            echo "<li>Found $line</li>";
            $found = true;
        }
    }
    if (!$found){
        echo "<p>Nothing found.</p>";
    }
?>

答案 1 :(得分:0)

PHP具有用于模式搜索的内置函数。你可能会在这里找到答案。 PHP to search within txt file and echo the whole line

答案 2 :(得分:0)

因为你试图获得文本文件中找到的所有结果,所以创建一个空字符串并在循环中连接它,如果结果是回显结果,否则找不到结果。

<?php
$str='';
$q = $_REQUEST["q"];
$f = fopen("content.txt", "r");
while (($line = fgets($f)) !== FALSE) {

    if (strstr($line, $q)) {
        $str.="<li>Found $line</li>";
    }

}
if($str==''){
    echo "<p>Nothing found.</p>";
}else {
   echo $str;
}

?>