数値文字列を含むフォルダーのみをフィルター処理するには、グロブ関数にどのパターンを使用する必要がありますか?
これにより、1 桁のフォルダーのみが表示されます。
glob('/path/to/files/[0-9]')
複数の数字を持つフォルダーや is_numeric が true の場合はどうなりますか?
数値文字列を含むフォルダーのみをフィルター処理するには、グロブ関数にどのパターンを使用する必要がありますか?
これにより、1 桁のフォルダーのみが表示されます。
glob('/path/to/files/[0-9]')
複数の数字を持つフォルダーや is_numeric が true の場合はどうなりますか?
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));}));
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_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);