当设置了url参数时,它应该搜索是否存在具有此parametername / foldername的文件夹。 但是glob函数给了我目录和foldername。 如何在没有目录的情况下列出foldername?
<?php
if(isset($_GET["customer"])){
$customer = $_GET['customer'];
$path = 'cover/';
$dirs = glob($path.'*', GLOB_ONLYDIR);
print_r($dirs);
if(array_search($customer, $dirs) !== false) {
echo "found something";
}
else {
echo "nothing found";
}
}
else {
echo "no parameter in the url";
}
?>
此代码的结果:
Array ( [0] => cover/twDE [1] => cover/twEN )
所以我想有一个数组只有没有封面/ /..
的foldernames谢谢你的帮助 格雷格
答案 0 :(得分:0)
sites-enabled
答案 1 :(得分:0)
试试这个:
function customResult($dirsFound) {
return str_replace('cover/', '', $dirsFound);
}
$customer = isset($_GET['customer']) ? $_GET['customer'] : '';
if (strlen($customer)) {
$path = 'cover/';
$dirs = array_map('customResult', glob($path . '*', GLOB_ONLYDIR));
if (array_search($customer, $dirs) !== false) {
echo "found something";
} else {
echo "nothing found";
}
} else {
echo "no parameter in the url";
}
答案 2 :(得分:0)
有几种方法可以做到。
chdir
和scandir
:
chdir('./cover');
$dirs = array_filter(scandir('.'), 'is_dir'));
使用FilesystemIterator
:
$fsi = new FileSystemIterator('./cover');
foreach ($fsi as $element) {
if ($element->isDir()) {
echo $element->getbasename(), PHP_EOL;
}
}
或glob
和basename
:
print_r(array_map('basename', glob('./cover', GLOB_ONLYDIR)));
以上所有内容只会为您提供&#34;封面&#34;中的目录名称。夹。然后,您可以运行array_search
或其他任何内容。
但是:,因为您的文件夹名称似乎与您的客户名称相对应,您也可以直接glob
,例如。
glob("./cover/$customer", GLOB_ONLYDIR);
这可以节省您对in_array
的额外通话费用。如果结果是空数组,则没有客户目录。
话虽如此,如果您只是验证路径+客户值是否是一个目录,您可以将代码减少到一次检查。
if (is_dir("./cover/$customer")) {
// found your customer's folder
}
旁注:如果使用此方法,则应确保$customer
变量不包含允许目录遍历的字符,以防止恶意用户尝试映射文件系统布局。