多次点击的PHP搜索
这是file1.php:多次点击的PHP搜索,php,Php,这是file1.php: <?php // Start the session session_start(); ?> <?php $path_to_check = ''; $needle = $_POST['query']; foreach(glob($path_to_check . '*.xml') as $filename) { foreach(file($filename)as $fl) { if(strpos($fl, $needle)!==
<?php
// Start the session
session_start();
?>
<?php
$path_to_check = '';
$needle = $_POST['query'];
foreach(glob($path_to_check . '*.xml') as $filename)
{
foreach(file($filename)as $fl)
{
if(strpos($fl, $needle)!==false)
{
$_SESSION["hit"] = $filename;
}
}
}
header('Location: file2.php');
?>
搜索正在工作,并返回searchword所在文件的名称,该文件作为变量$\u SESSION[“hit”]=$filename
但是,如果在多个文件中找到searchword,它将不起作用。然后,我需要转到另一个页面file1b.php(或file1b.html),其中将列出多个文件。然后从那里选择进入file2.php
如何做到这一点?使
$\u会话['hit']
成为所有文件名的一个匹配数组
$_SESSION['hit'] = array();
foreach(glob($path_to_check . '*.xml') as $filename)
{
foreach(file($filename)as $fl)
{
if(strpos($fl, $needle)!==false)
{
$_SESSION["hit"][] = $filename;
break;
}
}
}
然后,您可以使用一个简单的循环打印文件名
foreach ($_SESSION['hit'] as $filename) {
echo $filename . "<br>";
}
foreach($\u会话['hit']作为$filename){
echo$filename。“
”;
}
您可以在会话中存储阵列。只需在$\u会话[“hit”]上创建一个空数组,并将每个命中推送到该数组:)使用一个数组并在下一个文件中循环遍历它:$\u会话[“hit”][]=$filename代码>我想补充一点,在文件的所有行中循环都会有过大的杀伤力。只需在file\u get\u contents
上设置strpos
,可能就可以了。说得好。我使用了break
,因此一旦找到匹配行,它将停止搜索。最佳方法是使用while($f1=fgets($fp))
这样您就不必首先将整个文件读入内存最后,它只返回一个文件名,而不是所有文件名,即使搜索词出现在多个文件中。我还尝试了“echo$array();”但是它什么也没给。你不能回显数组,使用var\u dump($\u SESSION['hit'])
echo$\u SESSION['hit]]
甚至不是有效的语法,您应该从中得到一个错误<代码>[]
只有在分配中才允许在其内部没有索引。