我的代码位于下方。我注意到我开始添加更多文件,这些文件是要过滤的文件,但是现在我想添加扩展名。
所以任何jpg,mp3或者vtr都会被排除在外。说实话,我不确定100%如何处理这个问题。我试过没有成功。
$folder = scandir($path);
$files = array();
foreach($folder as $file){
if($file == '.' OR $file == '..' OR $file == 'index.htm' OR $file == 'index.html' OR $file == 'jpg'){}else{
$files[$file] = filemtime($path.'/'.$file);
}
}
答案 0 :(得分:2)
这是我的解决方案。我认为它非常直接且易于维护:
// put those two somewhere in conf file or something
$allowedFiles = array(
".",
"..",
"index.htm",
"index.html"
);
$allowedExtensions = array(
"mp3",
"jpg",
"png"
);
foreach($folder as $file){
$filePathInfo = pathinfo($file);
if(!in_array($filePathInfo["basename"], $allowedFiles) && !in_array($filePathInfo["extension"], $allowedExtensions)) {
// do what you want here...
}
}
希望这有帮助!
答案 1 :(得分:0)
<?php
$folder = scandir($path);
$files = array();
foreach($folder as $file)
{
if (!in_array($file, array('.', '..', 'index.htm', 'index.html')) && !in_array(substr($file, -4), array('.jpg', '.mp3', '.vtr')))
{
$files[$file] = filemtime($path.'/'.$file);
}
}
?>
只要扩展名称长度为3个字符,只需在第二个in_array()
中添加已排除的扩展名。
如果要排除扩展名为4个字符的文件,请添加另一个in_array。例如:
<?php
$folder = scandir($path);
$files = array();
foreach($folder as $file)
{
if (!in_array($file, array('.', '..', 'index.htm', 'index.html')) && !in_array(substr($file, -4), array('.jpg', '.mp3', '.vtr')) && !in_array(substr($file, -5), array('.jpeg', '.mpeg')))
{
$files[$file] = filemtime($path.'/'.$file);
}
}
?>
substr将提取扩展名,而in_array将确保扩展名不在给定的扩展名列表中。
答案 2 :(得分:0)
您可以使用regular expressions。即使您的文件中包含多个.
(例如index.html.bak
):
$folder = scandir($path);
$files = array();
foreach($folder as $file){
preg_match('/^(.*)(\..*)$/', $file, $matches);
$fileNamePart = $matches[1]; // Just the part before the extension
$fileExtension = $matches[2]; // The extension (like '.mp3')
if ($file == '.' || $file == '..' || $file == 'index.htm' || $file == 'index.html' || $fileExtension == '.mp3' || $fileExtension == '.jpeg' || $fileExtension == '.jpg' /* || other conditions ... */ ) {
// ...
} else {
$files[$file] = filemtime($path.'/'.$file);
}
}
答案 3 :(得分:0)
您可以使用preg_match
:
$notAllowedFileTypes = array(
"mp3",
"jpg"
);
$folder = scandir($path);
$files = array();
foreach($folder as $file){
if(isAllowed($file)){
//...
}
}
function isAllowed($file)
{
$notAllowedTypes = implode("|", $notAllowedFileTypes);
preg_match("/^.*(\.(" . $notAllowedTypes . ")?)$/", $file, $matches);
return count($matches) === 0;
}