PHP如何在文件夹中精准查找以‘654-’开头的文件?
PHP获取特定前缀文件的实现方法
嘿,这个需求其实很好实现,我给你两种实用的PHP方案,都能精准拿到你要的以654-开头的文件,自动排除像6546-da6sd.png这类不符合前缀的文件:
方法一:用glob函数快速匹配(最简单)
glob函数是PHP专门用来匹配文件路径的工具,语法简单直接,完全能满足你的需求:
// 替换成你的目标文件夹路径(相对/绝对路径都可以) $targetFolder = './your-folder/'; // 匹配所有以"654-"开头的文件 $matchedFiles = glob($targetFolder . '654-*'); // 遍历输出结果(可选,用来验证是否正确) foreach ($matchedFiles as $file) { // basename()用来只显示文件名,去掉路径部分 echo basename($file) . PHP_EOL; }
为什么这个方法可行?
glob的通配符654-*会精确匹配以"654-"开头的文件,像6546-da6sd.png这种开头是6546-的,自然不会被匹配到,完美符合你的要求。而且它会直接返回文件的完整路径(如果你的targetFolder是绝对路径的话),用basename()可以轻松提取纯文件名。
方法二:用scandir手动过滤(更灵活)
如果之后你需要添加更多自定义过滤规则(比如排除特定扩展名、跳过子目录),可以用scandir先获取所有文件,再手动筛选:
$targetFolder = './your-folder/'; // 获取文件夹内的所有条目(包括文件、目录、.和..) $allItems = scandir($targetFolder); // 过滤出符合条件的文件 $matchedFiles = array_filter($allItems, function($item) use ($targetFolder) { // 跳过.、..和子目录 if ($item === '.' || $item === '..' || is_dir($targetFolder . $item)) { return false; } // 判断文件名是否以"654-"开头 // PHP 8.0+推荐用str_starts_with,更直观: // return str_starts_with($item, '654-'); // 兼容低版本PHP用strpos: return strpos($item, '654-') === 0; }); // 把关联数组转成索引数组(可选,方便后续遍历) $matchedFiles = array_values($matchedFiles); // 输出结果 foreach ($matchedFiles as $file) { echo $file . PHP_EOL; }
补充小提醒
不管用哪种方法,都要确保PHP对目标文件夹有读取权限,不然会返回空结果哦~如果用相对路径,注意脚本的工作目录是否和目标文件夹对应,用绝对路径会更稳妥。
内容的提问来源于stack exchange,提问作者Vasia
相关产品推荐
相关产品推荐

