我應該使用哪種模式用於glob函數,以僅過濾包含數字字符串的文件夾。glob - 過濾器 - 文件夾名稱中的數字字符串
這將顯示一個只有一位數字的文件夾:或當is_numeric是真的
glob('/path/to/files/[0-9]')
什麼用多個數字文件夾?
我應該使用哪種模式用於glob函數,以僅過濾包含數字字符串的文件夾。glob - 過濾器 - 文件夾名稱中的數字字符串
這將顯示一個只有一位數字的文件夾:或當is_numeric是真的
glob('/path/to/files/[0-9]')
什麼用多個數字文件夾?
function filterFiles($path, $flag="", $ext="", $regex_pattern="") {
if ($ext) $ext=".$ext";
if ($flag=="files") $files=array_filter(glob("$path/*$ext"), "is_file");
else if ($flag=="dirs") $files=array_filter(glob("$path/*$ext"), "is_dir");
else $files=glob("$path/*$ext");
if ($regex_pattern) foreach($files as $i=>$file) {
if(!preg_match($regex_pattern, basename($file))){
unset($files[$i]);
}
}
$result=array_values($files);
return $files;
}
$revPaths=filterFiles($path,"","","/^\d+$/");
這是可能的glob
,雖然凌亂:
glob('/path/to/files/*{0,1,2,3,4,5,6,7,8,9}*',GLOB_BRACE);
相反,結合一些功能:
array_filter(glob("/path/to/files/*",GLOB_ONLYDIR),function($a) {return preg_match("/\d/",basename($a));}));
你會希望添加的GLOB_ONLYDIR
標誌:
你需要將其縮小到包含數字和字母或數字的列表,然後過濾掉包含字母的文件夾。
$files = glob("[0-9]*", GLOB_ONLYDIR);
$final_list = [];
foreach($files as $file){
if(preg_match("/\d+/", basename($file))){
$final_list[] = $file;
}
}
print_r($final_list);
從什麼時候開始支持正則表達式組件? –
@Kolink http://www.php.net/manual/en/function.glob.php#88250我知道那個來自phpfreaks.com的人,他是一個非常可靠的sourece。 –
它返回「1」,「123」,「123fg」這樣的目錄。如果我不需要「123fg」會怎麼樣? – ihtus
水珠語法將無法正常工作(這將匹配包含數字的任何東西)。海事組織你的第二個主張是最好的解決方案。 – rixo
第二個選項爲+1。 – itachi
第二個選項是使用匿名函數,它只適用於PHP> = 5.3 – ihtus