PHP:在目录上查找文件

时间:2009-12-24 09:19:33

标签: php

是否可以使用php脚本在C:/(windows)上找到文件?如果是,是否有任何示例代码/解决方法手册。

编辑:网络服务器与C:/目录在同一台PC上。

谢谢

6 个答案:

答案 0 :(得分:3)

如果您正在寻找递归搜索,您可能会对spl RecursiveDirectoryIterator感兴趣。

<?php
$path = 'C:/';
$file = 'issetup.exe';

$rdi = new RecursiveDirectoryIterator($path);
$rit = new RecursiveIteratorIterator($rdi);
foreach( $rit as $path=>$info ) {
  if ( $file===$info->getFilename() ) {
    echo $path, "\n";
    break;
  }
}

答案 1 :(得分:2)

只要您只想查看一个目录,然后是,使用PHP函数对其进行编码会更快。但是如果你想通过树递归搜索一个特定的文件名,那么它可能要快得多:

$cmd="dir $fname /s"
chdir("C:/");
$found=explode("\n",`$cmd`);

但我相信现在NT已经在操作系统中内置了文件索引 - 因此必须在某处显示钩子才能进行更快速的搜索。

下进行。

答案 2 :(得分:1)

我为此目的使用scandir,就像这样:

$path = $_SERVER['DOCUMENT_ROOT'];
$files = scandir($path);
echo '<pre>';
if (count($files) > 2) {
  // first 2 entries are '.' and '..'
  $files = array_slice($files, 2);
  print_r($files);
}
echo '</pre>';

阅读http://php.net/manual/en/function.scandir.php 有关对结果数组进行绝缘处理的帮助:http://php.net/manual/en/ref.array.php

答案 3 :(得分:0)

如果您正在讨论安装PHP的服务器,只要您访问与Web服务器共享权限的HDD区域,就可以无限制地使用PHP文件命令。 PHP.net上的第一个例子说了......

http://php.net/manual/en/function.file.php

如果您正在谈论用户的计算机,他们可以使用<input id="uploader" name="uploader" type="file">表单元素选择要上传的文件,但您无法使用任何服务器端语言进行浏览,因为正是如此。

答案 4 :(得分:0)

除非您在谈论服务器上的C:驱动器或Windows机器上运行的PHP的命令行版本,否则PHP 作为服务器端语言,无法访问到你的C:开车。

如果你 引用服务器上的C:驱动器,那么readdir功能(如haim evgi建议的那样)应该适合你。

请记住阅读readdir参考页面上的警告,并记得先打开目录。函数参考提供了示例代码。

答案 5 :(得分:0)

我假设你想从实际的PHP解释器运行(即作为本地脚本),你可以使用SPL(php 5)

仅举两个例子,请参阅herehere。如果您在搜索得足够努力的情况下阅读网络上的PHP manual和其他许多内容,请参阅更多示例。