Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 回音结果进入循环_Php_Echo - Fatal编程技术网

Php 回音结果进入循环

Php 回音结果进入循环,php,echo,Php,Echo,我有一个html搜索框,它使用下面的脚本,但是看起来echo输出是循环的,或者显示我使用fopen的.txt文件的所有结果。我试图在echo的末尾添加exit,但无论我使用搜索框搜索什么,它都只能获取content.txt中的第一行。我试图让它只显示搜索结果 以下是我一直在研究的代码: <?php $q = $_REQUEST["q"]; $f = fopen("content.txt", "r"); while (($line = fgets($f)) !== FALSE) {

我有一个html搜索框,它使用下面的脚本,但是看起来echo输出是循环的,或者显示我使用fopen的.txt文件的所有结果。我试图在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>";
    }

}

?>

像这样试试

<?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>";
    }
?>


PHP有一个内置的模式搜索功能。你可以在这里找到答案

由于您正在尝试获取文本文件中找到的所有结果,因此创建一个空白字符串,如果结果存在,则在循环中对其进行concat,否则将返回结果,否则将找不到结果

<?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;
}

?>


您可以使用if语句而不是while语句loop@akshaykhale嗯,我刚刚测试过。似乎只能得到txt文件中第一行的结果。请检查答案。他们中至少有一个会回答你的问题。如果他们不工作。在每个答案下面的评论中添加您收到的错误。