регулярное выражение или что-то, чтобы найти файл в PHP - PullRequest
0 голосов
/ 02 февраля 2009

У меня есть имя в базе данных, скажем, его "DFectuoso" и некоторая устаревшая система хранит DFectuoso_randomnameofafile.doc.

Теперь я хочу найти все поля «DFectuoso» и показать ссылки на них на странице PHP.

С чего бы начать?

Ответы [ 3 ]

4 голосов
/ 02 февраля 2009

Я бы попробовал с glob() в сочетании с readfile().

С макушки головы:

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

и просто передайте файл с readfile().

Помните, что если вы используете $_GET для передачи выбранного файла пользователю, сначала санируйте и проверяйте разрешения. Не делайте просто readfile($_GET['chosenFile']);, иначе у вас будут проблемы!

2 голосов
/ 02 февраля 2009

Если это не так просто, как поиск файлов с определенным префиксом, вы можете сделать что-то вроде этого:

$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');
2 голосов
/ 02 февраля 2009

Хороший способ - использовать 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";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...