2013-03-24 135 views
2

我想驗證上傳的文件在php中的路徑,必須使用正則表達式驗證,而不是本機函數。正則表達式的文件路徑

是我得到的路徑是:

​​

所以,當我試這條道路與/^[a-zA-Z0-9\-\_:\\]*\Z/假(我想這是因爲該路徑有反斜槓\

有使用正則表達式驗證PHP和PHP上載文件的Linux和Windows服務器路徑的方法?

+0

你忘了冒號:。 – Gene 2013-03-24 19:18:21

+0

仍然失敗... – 2013-03-24 19:22:40

+0

嘗試將Windows路徑上的反斜槓的所有實例替換爲正斜槓。如果您打開命令提示符,您仍然可以通過/或\訪問文件。 – djthoms 2013-03-24 19:24:09

回答

3
$text = 'C:\xampp\tmp\php33DB.tmp'; 
preg_match("#^[a-zA-Z0-9_\\\\:.-]+#",$text,$out); 
print_r($out); 

輸出:

Array ([0] => C:\xampp\tmp\php33DB.tmp) 

但是,此文件是由PHP上傳創建的臨時文件,我覺得沒必要來驗證它,因爲它是由服務器不是客戶端創建,你可以檢查mime類型的上傳文件,如果文件是通過HTTP Post上傳的,請檢查is_uploaded_file()。

0

我建議使用此功能來代替:file_exists

因此,在你的代碼,你可以這樣做:

if (file_exists($tmpFile)) { 
    // ... do stuff 
}