Как и Якоби предложил , glob
должно сработать. В нем также может быть несколько заполнителей, поэтому, если вы знаете глубину, но не правильно называете имя, вы можете сделать:
$matchingFiles = glob('/server/*/7656875*');
, что соответствует
"/server/12345/7656875 foo.txt"
"/server/56789/7656875 bar.jpg"
но не
"/server/12345/subdir/7656875 foo.txt"
Если вы не знаете, глубина glob()
не поможет, вы можете использовать RecursiveDirectoryIterator , передающий самый верхний путь к папке, например,
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('/server'));
foreach($iterator as $fileObject) {
// assuming the filename begins with the number
if(strpos($fileObject->getFilename(), '7656875') === 0) {
// do something with the $fileObject, e.g.
copy($fileObject->getPathname(), '/somewhere/else');
echo $fileObject->openFile()->fpassthru();
}
}
* Примечание: код не проверен, но должен работать
DirectoryIterator возврат SplFileInfo объектов, так что вы можете использовать их для прямого доступа к файлам через API высокого уровня.