我想驗證上傳的文件在php中的路徑,必須使用正則表達式驗證,而不是本機函數。正則表達式的文件路徑
是我得到的路徑是:
所以,當我試這條道路與/^[a-zA-Z0-9\-\_:\\]*\Z/
假(我想這是因爲該路徑有反斜槓\
)
有使用正則表達式驗證PHP和PHP上載文件的Linux和Windows服務器路徑的方法?
我想驗證上傳的文件在php中的路徑,必須使用正則表達式驗證,而不是本機函數。正則表達式的文件路徑
是我得到的路徑是:
所以,當我試這條道路與/^[a-zA-Z0-9\-\_:\\]*\Z/
假(我想這是因爲該路徑有反斜槓\
)
有使用正則表達式驗證PHP和PHP上載文件的Linux和Windows服務器路徑的方法?
$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()。
我建議使用此功能來代替:file_exists
因此,在你的代碼,你可以這樣做:
if (file_exists($tmpFile)) {
// ... do stuff
}
你忘了冒號:。 – Gene 2013-03-24 19:18:21
仍然失敗... – 2013-03-24 19:22:40
嘗試將Windows路徑上的反斜槓的所有實例替換爲正斜槓。如果您打開命令提示符,您仍然可以通過/或\訪問文件。 – djthoms 2013-03-24 19:24:09