0

我有这个脚本可以将文件搜索到目录中。当我使用确切的术语执行搜索时效果很好,例如:“my file.doc”、“sales order 1234.pdf”

谁能帮我修改搜索词到文件名,例如:“文件”或“销售”

TKS 克里斯。

<?php
    if($_POST['search']) {
    $word = $_POST['file'];
    $dir = './';
    $list  = new RecursiveDirectoryIterator($dir);
    $recursive = new RecursiveIteratorIterator($list);

    $num = 0; //  
    foreach($recursive as $obj){

    //echo $obj->getFilename().'<br />'; 
    if($obj->getFilename()=="$word"){
      echo $obj->getPathname().'<br/>';
      $num++;
       }
      } 
    echo "found(s) $num file(s)."; 
    }
   ?>


<form action="" method="POST">
search files. <input type="text" name="file" value="">
<input type="submit" name="search">
</form>
4

3 回答 3

0
<?php
    if($_POST['search']) {
    $word = $_POST['file'];
    $dir = './';
    $list  = new RecursiveDirectoryIterator($dir);
    $recursive = new RecursiveIteratorIterator($list);

    $num = 0; //  
    foreach($recursive as $obj){

    //echo $obj->getFilename().'<br />'; 
    if( strpos( $obj->getFilename(), "$word" ) === true ){
      echo $obj->getPathname().'<br/>';
      $num++;
       }
      } 
    echo "found(s) $num file(s)."; 
    }
   ?>


<form action="" method="POST">
search files. <input type="text" name="file" value="">
<input type="submit" name="search">
</form>
于 2012-07-06T12:02:54.647 回答
0

您可以在文件名上使用strpos函数或strstr函数。

测试函数是否返回不同于 false 的内容,以了解您的文件名包含您的链。

于 2012-07-06T12:05:00.360 回答
0

您可以使用 PHP 的substr_count来计算一个字符串在另一个字符串中的出现次数,但由于您需要一个或多个字符串,您可以像这样检查:

if( substr_count( $obj->getFilename(), $word ) ){
    echo $obj->getPathname().'<br/>';
    $num++;
}

编辑:对于不区分大小写的比较:

if( substr_count( strtolower($obj->getFilename()), strtolower($word) ) {
     // ...
}
于 2012-07-06T12:05:42.597 回答