我的网站上有一个搜索框。如果学生输入了一些文本,则脚本必须在文件夹中搜索具有该类型名称的文件。
如何阅读文件夹和搜索文件?
答案 0 :(得分:6)
根据您的操作系统和文件夹中文件的大小,您可以采用几种不同的方式。最简单的方法是使用glob():
$safer = escapeshellarg( $_REQUEST['search'] );
$results = glob( "$dir/*$safer*" );
这应该会给你与该目录中的“ls * something *”相同的结果。
如果你有一个更具体的搜索模式和目录中适度的文件大小,scandir()会给你一个你可以使用preg_match()的数组。
如果您有大量文件,可以考虑利用/ usr / bin / locate或/ usr / bin / find。来自php的这些shell执行会导致系统负载。如果您有大量学生或面向公众的搜索,那么您将需要采用不同的方法。
答案 1 :(得分:2)
阅读PHP手册上的glob() entry。
答案 2 :(得分:0)
您可以使用scandir函数,它可以返回一个排序列表,然后您可以按照搜索数组的相同方式进行搜索。然后,您还可以使用Levenshtein Distance Algorithm的实现来提供“您的意思是?”来自您的应用程序的样式响应。
答案 3 :(得分:0)
MySQL的?你从未连接到MySql或数据库。加上glob的位置(“c:/ windows / $ safer ”)在服务器上不存在。
如果你想用glob搜索,你需要使用几个ifs,elseifs和elses。
<?php
if(isset($_GET['s']) and $_GET['s'] != '') {
$dir = 'dir/sub-dir';
$ext = '.htm';
$search = $_GET['s'];
$results = glob("$dir/*$search*$ext");
if(count($results) != 1) {
foreach($results as $item) {
echo "<li><a href='$item'>$item</a></li>\r\n";
}
}
if(count($results) == 1) {
$item = $results[0];
echo "<li color='blue'><a href='$item'>$item - only result</a></li>\r\n";
}
if(count($results) == 0) {
echo "<li>no results to display</li>\r\n";
}
}
else {
?>
<form action=''>
<input name='s'>
<input type='submit'>
</form>
<?php
}
?>