2012-05-09 49 views
1

我有這個文件,我上傳到通過PHP文件上傳服務器..PHP ereg_replace

6;'!8.jpg 

我用這個代碼,除去非字母數字字符..

$image1 = ereg_replace("[^A-Za-z0-9]", "", $_FILES["image"]["name"]); 

工作正常,但它返回像我這樣的圖像

68jpg 

什麼是將此返回爲的最佳方法

任何想法?

+9

ereg *已棄用。使用preg *代替。 –

回答

2

請勿使用ereg/eregi。這些功能已被棄用。改用PCRE函數。

嘗試這種方式

$image1 = preg_replace("#[^a-z0-9\.]#i", null, $_FILES["image"]["name"]);

+0

這是我一直在尋找:)謝謝 – user979331

+0

修復正則表達式的好處:-) – shadyyx

0

試試這個代碼,而不是:

$image1 = ereg_replace("[^A-Za-z0-9\\.]", "", $_FILES["image"]["name"]); 

但你確實應該嘗試使用preg_代替ereg_ PHP函數,因爲他們更高性能(不建議使用)。

+1

這仍然無法正常工作 - 請檢查您的正則表達式。它應該帶有一個反斜槓:'[^ A-Za-z0-9 \。''。您的正則表達式將允許alphanums,一個反斜槓,然後任何字符(COS您確實逃脫了一個反斜槓和一個非轉義的點意味着什麼)... – shadyyx

+0

作品在PHP 5.2上測試我的本地主機 – adrien

-1

你也許可以使用PHP的PATHINFO($ _ IMAGE [ 「形象」] [ 「名稱」])命令掰開一個文件名的基本路徑,基本名稱和文件擴展名。然後,您可以在基本名稱上替換(如@John Conde建議的那樣),然後將基本名稱和文件擴展名連接在一起。

+0

爲什麼這很複雜? -1 – shadyyx

+0

看過接受的答案後,可能沒有理由。 – OrionRogue

+0

問題是,許多人解決了問題過於複雜的解決方案...爲什麼要使用'pathinfo',然後分開,然後使用'preg_replace'時,它可以立即使用結果。 – shadyyx