2010-02-25 47 views
2

怎樣添加到項目中允許(gif$|jpg$|png$|jpeg$)PHP preg_match請幫忙。很簡單

到下面的代碼

$regexp = "/[0-9a-zA-z\.]/"; 
if (preg_match($regexp, $imageInput)) 

還如何添加在排除列表如因此阻止人們unploading .exe文件等

列表

感謝

編輯

我用下面的代碼修復了它

有關如何使它更好的建議?

$regexp = "/^[a-zA-z0-9._-]+(gif|jpg|png|jpeg)/"; 
+0

我希望你知道''的描述只是*一個*字符。 – Gumbo 2010-02-25 16:11:20

+0

希望你的意思是?你能否解釋一下。我不是正則表達式 – 2010-02-25 16:12:16

+0

以匹配多個字符使用'[0-9a-zA-Z \。] +'(一個或多個)或'[0-9a-zA-Z \。] *'(零個或多個) – knittl 2010-02-25 16:15:55

回答

4

使用肯定列表:

/^[0-9a-zA-z\.]+\.(gif|jpg|png|jpeg)$/ 

或負前瞻:

/^[0-9a-zA-z\.]+\.(?!exe$)[a-z]+$/ 

肯定列表是安全的,但更嚴格的選項。

+0

這不會允許'foo.execute'。 – Gumbo 2010-02-25 16:16:35

+0

@Gumbo:謝謝,這可以通過使用(?!exe $)來解決。 – 2010-02-25 16:19:14

1

將您的正則表達式更改爲/([0-9a-zA-z\.])(gif|jpg|png|jpeg)$/這隻會允許您指定的擴展名。

1

嘗試:[0-9A-ZA-Z \]

$regexp = "/^[0-9a-zA-z\.]+\.(jpg|gif|png)$/"; 

的停止模式使用'/.(exe|cmd|bat|sh)$/'然後if(!preg_match($pattern, $text))

+0

感謝您的幫助,我實際上在幾分鐘後自己修復了它,謝謝:) – 2010-02-25 16:17:08