2013-11-15 32 views
0

我搜索了谷歌周圍的一種方式來打開並閱讀具有特定擴展名的特定文件夾中未知/隨機名稱的文件(這將是唯一的文件在該文件夾中,但它每小時更新一次新名稱),但找不到任何東西。此前該文件每次總是同一個名字可惜現在它改變了......找到並打開一個文件,用php的隨機/未知名稱

以前我不得不只定義它是這樣的:

$file = "/var/uploads/quarter.csv"; 
$handle = @fopen($file, "r"); 

但它不工作了一個隨機名稱。

所以,我已經試過:

function the_file($dir = '/var/uploads/') { 
    $files = glob($dir . '/*.csv'); 
    $file = $files; 
} 

$handle = @fopen($file, "r"); 

腳本繼續...

,但它不工作。任何幫助將不勝感激,謝謝。

+0

嘗試列出文件目錄,然後一些正則表達式 –

+1

glob返回一個數組,如果你確定文件夾中只有一個文件,那麼使用'return $ files [0];'。 –

+0

它是如何「不工作」?任何錯誤消息? var_dump($ files)可能有幫助嗎? – x29a

回答

3

$file變量不存在於函數範圍之外,因此您將無法在函數外部使用它。此外,glob()返回數組 - 如果只有一個文件,你可以得到數組的第一個元素並返回它,就像這樣:

function the_file($dir = '/var/uploads/') { 
    $files = glob($dir . '/*.csv'); 
    return $files[0]; // return the first filename 
} 

現在將其存儲在一個變量,你可以做:

$file = the_file(); // or specify a directory 
# code ... 
+0

是的,這工作像一個魅力。非常感謝您的幫助,Amal! :) – user2996167

+0

@ user2996167:很高興有幫助。乾杯! –

0

一個可能的解決方案可以是:

如果只有一個目錄中的文件,你可以做一個scandir獲得該文件夾的內容。 (見PHP ref

$dir = 'your_folder_name'; 
$files1 = scandir($dir); 

$files的內容將是:

Array 
(
    [0] => . 
    [1] => .. 
    [2] => yourfile.csv 
) 

所以,你可以得到該文件的全名:

$filename = $files1[2];