2010-02-25 48 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