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

问题描述 投票:0回答:2

在mydirectory中

green.text black.text shadow.text

和我的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”

php search
2个回答
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
投票
<?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标志。 (当我进行本地测试时删除了dir)

© www.soinside.com 2019 - 2024. All rights reserved.