在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”
$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
- 但这可能是了解恕我直言的最快和最简单的方法。
<?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)