正则表达式或东西在PHP中找到一个文件

时间:2009-02-02 19:57:42

标签: php regex file

我在数据库中有一个名字,比如说它的“DFectuoso”和一些遗留系统存储了DFectuoso_randomnameofafile.doc。

现在我想找到所有归档的“DFectuoso”并在PHP页面中显示它们的链接。

从这开始的方法是什么?

3 个答案:

答案 0 :(得分:4)

我会尝试将glob()readfile()结合使用。

脱离我的头顶:

$findname = 'DFectuoso';
foreach (glob('/path/to/somewhere/'.$findname.'*') as $file) {
  provide_a_link_to($file);
}

并使用readfile()传递文件。

请记住,如果您使用$_GET将所选文件传递给用户,请首先清理并验证权限。不要只做readfile($_GET['chosenFile']);或者你会遇到麻烦!

答案 1 :(得分:2)

一个好方法是使用glob()

$files = glob("PATH_TO_FILES/DFectuoso_*.doc");
echo "<ul>\n";
foreach($files as $f)
    echo '<li><a href="'.$f.'">'.$f."</a></li>\n";
echo "</ul>\n";

答案 2 :(得分:2)

如果它不像查找具有特定前缀的文件那么简单,您可以执行以下操作:

$files = glob('*');

function filter_files($filename) {
    // Do any processing you want on the filename here
    $file_matches = preg_match('/^DFectuoso.*\.(doc|txt)$/', $filename);
    return $file_matches;
}

$found_files = array_filter($files, 'filter_files');