代码之家  ›  专栏  ›  技术社区  ›  Gary Willoughby

PHP-在只知道文件名的一部分时打开或复制文件?

  •  0
  • Gary Willoughby  · 技术社区  · 16 年前

    例如: 我得到的号码是“7656875”,仅此而已。 我需要与名为“\server\7656800\7656875 foobar 2x4”的文件交互。

    4 回复  |  直到 16 年前
        1
  •  4
  •   Yacoby    16 年前

    如果您知道目录名,请考虑使用 glob()

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

        2
  •  3
  •   Community Mohan Dere    9 年前

    就像 Yacoby suggested , 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直接访问文件。

        3
  •  0
  •   Zack Burt    16 年前
    $result = system("ls \server\" . $specialNumber . '\');
    $fh = fopen($result, 'r');
    
        4
  •  0
  •   Tim Green    16 年前

    如果它隐藏在下面可变长度的子目录中,请使用 find

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

    推荐文章