如何在PHP中使用2个单词搜索目录中的文件

时间:2018-11-12 21:52:30

标签: php search

在我的目录中

  

green.txt
  black.txt
  shadow.txt

和我的php代码

<?php
$key = "black+shadow"
$dir = 'file/dir';
$ext = '.txt';
$i=0;
$search = $key;
$results = glob("$dir/*$search*$ext");
if(count($results) != 1) {
    foreach($results as $item) {
      echo $item;
    }
  }?>

我想获取输出“ black.txt”和“ shadow.txt”

2 个答案:

答案 0 :(得分:1)

$key = "black+shadow";
$dir = "file/dir"
$ext = '.txt';

foreach (explode("+", $key) as $filePart) {
    $fileName = $filePart . $ext;
    if (file_exists("{$dir}/{$fileName}")) {
        echo $fileName . '<br>';
    }
}

这假定模式将始终由+

分隔。

如果最终得到更复杂的解决方案,则可以使用glob-但这可能是理解恕我直言的最快,最简单的方法。

答案 1 :(得分:1)

<?php
$key = "{black,shadow}";
$ext = '.txt';
$i=0;
$search = $key;
$results = glob("$search*$ext",GLOB_BRACE);
if(count($results) != 1) {
    foreach($results as $item) {
      echo $item;
    }
  }?>

按照手册

GLOB_BRACE - Expands {a,b,c} to match 'a', 'b', or 'c'

我在您的搜索词周围添加了花括号,并添加了GLOB_BRACE标志。 (目录在我进行本地测试时已删除)