我正在尝试创建一个函数,该函数将有效地在文档根目录中搜索文件并返回其路径。目前,我有以下感谢RecursiveDirectoryIterator和RegexIterator。
<?php
function find_file($filename) {
$pattern = preg_quote($filename);
$dir = new RecursiveDirectoryIterator($_SERVER['DOCUMENT_ROOT']);
$iterate = new RecursiveIteratorIterator($dir);
$reg_iterate = new RegexIterator($iterate, "/.*$pattern.*/", RegexIterator::GET_MATCH);
$ignore_pattern = '('/?)(_*?)(old|archive|backup|cache|node_modules)';
foreach($reg_iterate as $matches){
foreach($matches as $file){
$file = rtrim($file, '.');
if(!preg_match("/$ignore_pattern/i", $file)){
return $file;
}
}
}
}
echo find_file('styles.css');
?>
出于性能原因,我正在尝试忽略某些目录进行搜索。我宁愿不扫描已知无果的目录。目前,我只能在从递归迭代器迭代器收到文件列表后忽略某些路径模式,因此速度很慢。有没有更聪明的方法可以推荐?
你可以试试glob:http://php.net/manual/en/function.glob.php。易于使用且速度快。