我有一个使用下面脚本的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>";
}
}
?>
答案 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;
}
?>