2009-12-24 141 views
3

是否可以使用php腳本在C:/(windows)上找到文件?如果是,是否有任何示例代碼/解決方法的手冊。PHP:在目錄上查找文件

編輯:Web服務器是同一臺PC上爲C:/目錄中

謝謝

+0

http://php.net/manual/en/function.readdir.php – 2009-12-24 09:21:28

回答

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; 
    } 
} 
+0

工作很好。謝謝。 但是,我必須使用確切的搜索作爲文件名。假設文件名是:'我喜歡藍色。jpg',我的搜索是:'blue'。這是如何使它在顯示藍色時顯示jpg文件的例子。 – bomberguy 2009-12-24 12:43:32

+0

這可能類似於'if(false!== stripos($ info-> getFilename(),$ searchstring))',http://docs.php.net/stripos – VolkerK 2009-12-24 21:09:55

+0

嗨,它的工作很好。謝謝。 另一個問題,我有三個文件叫做blue.jpg,blue.avi,blue.mp3。每當我搜索藍色,只有blue.avi返回。是否有可能返回3個文件? – bomberguy 2009-12-25 05:34:08

0

如果你正在談論的whcih安裝PHP的服務器,它應該是與PHP無限可能。文件命令,只要您訪問與Web服務器共享權限的HDD區域即可。在PHP.net第一個例子說,隨着多...

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

如果你談論你的用戶的機器,他們可以選擇一個文件使用<input id="uploader" name="uploader" type="file">表單元素上傳,但您不能使用它瀏覽任何服務器端語言,因爲它就是這樣。

0

除非您正在討論服務器上的C:驅動器,或者您的Windows計算機上運行的PHP命令行版本,否則PHP 作爲服務器端語言無法訪問您的C:駕駛。

如果您的是指服務器上的C:驅動器,那麼readdir函數(如haim evgi所建議的)應該適合您。

請記住閱讀readdir參考頁面上的警告,並記得先打開目錄。函數參考提供了示例代碼。

0

我假設你想從實際運行PHP解釋器(即作爲本地腳本),您可以使用SPL(php 5)

請參閱herehere僅爲兩個示例。更多的例子,如果你閱讀PHP manual和網上的很多其他人,如果你足夠努力搜索。

2

只要你只想看一個目錄,那麼是的,使用PHP函數進行編碼更快。但是,如果你想通過樹特定文件進行遞歸搜索那麼它很可能會快很多掏出:

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

但我相信,這幾天NT具有內置於OS文件索引 - 所以必須在某處暴露出一些鉤子,以便更快地進行搜索。

C.