2010-02-25 2 views
2

Как добавить в список разрешенных пунктов (gif$|jpg$|png$|jpeg$)PHP preg_match поможет пожалуйста. Довольно простой

в следующий код

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

также, как добавить в список исключений, например, таким образом остановить людей unploading EXE-файлы и т.д.

Благодаря

EDIT

Я установил его следующим кодом

любые советы о том, как сделать его лучше?

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

Я надеюсь, что вы в курсе, что '' описывает только * один * знак. – Gumbo

+0

Надеюсь, вы имеете в виду? Не могли бы вы немного объяснить. Im не для регулярного выражения –

+0

для сопоставления нескольких символов используйте '[0-9a-zA-Z \.] +' (Один или несколько) или '[0-9a-zA-Z \.] *' (Ноль или более) – knittl

ответ

4

Используйте положительный список:

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

Или отрицательный предпросмотр:

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

Положительный список является более безопасным, но более ограничительным вариантом.

+0

Это не разрешит 'foo.execute'. – Gumbo

+0

@Gumbo: Спасибо, это можно исправить, используя (?! Exe $). –

1

измените ваше регулярное выражение на /([0-9a-zA-z\.])(gif|jpg|png|jpeg)$/, это разрешит только указанные вами расширения.

1

попробовать: [. 0-9a-Za-г \]

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

для использования остановки-паттерна '/.(exe|cmd|bat|sh)$/', а затем if(!preg_match($pattern, $text))

+0

Спасибо за помощь, я действительно исправил ее сам после нескольких минут от нее спасибо :) –

Смежные вопросы