PHP - Open or copy a file when knowing only part of its name?

☆樱花仙子☆ 提交于 2021-02-20 04:40:47

问题


I have a huge repository of files that are ordered by numbered folders. In each folder is a file which starts with a unique number then an unknown string of characters. Given the unique number how can i open or copy this file?

for example: I have been given the number '7656875' and nothing more. I need to interact with a file called '\server\7656800\7656875 foobar 2x4'.

how can i achieve this using PHP?


回答1:


If you know the directory name, consider using glob()

$matches = glob('./server/dir/'.$num.'*');

Then if there is only one file that should start with the number, take the first (and only) match.




回答2:


Like Yacoby suggested, glob should do the trick. You can have multiple placeholders in it as well, so if you know the depth, but not the correct naming, you can do:

$matchingFiles = glob('/server/*/7656875*');

which would match

"/server/12345/7656875 foo.txt"
"/server/56789/7656875 bar.jpg"

but not

"/server/12345/subdir/7656875 foo.txt"

If you do not know the depth glob() won't help, you can use a RecursiveDirectoryIterator passing in the top most folder path, e.g.

$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();
    }
}

* Note: code is untested but should work

DirectoryIterator return SplFileInfo objects, so you can use them to directly access the files through a high-level API.




回答3:


$result = system("ls \server\" . $specialNumber . '\');
$fh = fopen($result, 'r');



回答4:


If it's hidden below in sub-sub-directories of variable length, use find

echo `find . -name "*$input*"`;

Explode and trim each result, then hope you found the correct one.



来源:https://stackoverflow.com/questions/2692012/php-open-or-copy-a-file-when-knowing-only-part-of-its-name

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!