Использование filter_var () вместо регулярных выражений
Обычно для валидации e-mail можно использовать вот такое выражение или упрощенный вариант:
$filter = "^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,4})$"; if (!eregi($filter, $user_email)) { echo "неправильный e-mail адрес"; } |
с помощью filter_var () это делается так:
if (!filter_var($user_email, FILTER_VALIDATE_EMAIL)) { echo "неправильный e-mail адрес"; } |
Таким образом можно быстро определить соответсвует ли принятое нами значение тому, что мы ожидаем.
Некоторые фильтры имеют так же дополнительные опции (флаги):
$user_url = "google.com"; // Мы ожидаем, что URL будет с "http://" if (!filter_var($user_url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED)) { echo "неправильный URL"; } |
Кроме фильтров FILTER_VALIDATE_* есть еще фильтры FILTER_SANITIZE_* — они не только проверяют полученные данные, но еще и изменяют их в соответствии с заданным фильтром:
// $input_var - входные данные // $sanit_var - входные данные, очищенные от всего кроме чисел и операторов $input_var = "1+7-3=5 и еще - 5 + 4 и все это равно 4"; $sanit_var = filter_var($user_int, FILTER_SANITIZE_NUMBER_INT); // Результат: 1+7-35-5+44 |
Фильтры обработки
- FILTER_SANITIZE_STRING — удалить потенциально опасные данные. С флагами:
- FILTER_FLAG_NO_ENCODE_QUOTES — не кодировать кавычки
- FILTER_FLAG_STRIP_LOW — удалить символы с ASCII-кодом меньше 32
- FILTER_FLAG_STRIP_HIGH — удалить символы с ASCII-кодом больше 127
- FILTER_FLAG_ENCODE_LOW — кодировать символы с ASCII-кодом меньше 32
- FILTER_FLAG_ENCODE_HIGH — кодировать символы с ASCII-кодом больше 127
- FILTER_FLAG_ENCODE_AMP — кодировать символ & в &
- FILTER_SANITIZE_STRIPPED — псевдоним для FILTER_SANITIZE_STRING
- FILTER_SANITIZE_ENCODED — удалить или кодировать нежелательные символы (подобно urlencode ()). С флагами:
- FILTER_FLAG_STRIP_LOW — удалить символы с ASCII-кодом меньше 32
- FILTER_FLAG_STRIP_HIGH — удалить символы с ASCII-кодом больше 32
- FILTER_FLAG_ENCODE_LOW — кодировать символы с ASCII-кодом меньше 32
- FILTER_FLAG_ENCODE_HIGH — кодировать символы с ASCII-кодом больше 32
- FILTER_SANITIZE_SPECIAL_CHARS — преобразовать специальные символы в HTML-сущности. С флагами:
- FILTER_FLAG_STRIP_LOW — удалить символы с ASCII-кодом меньше 32
- FILTER_FLAG_STRIP_HIGH — удалить символы с ASCII-кодом больше 32
- FILTER_FLAG_ENCODE_HIGH — кодировать символы с ASCII-кодом больше 32
- FILTER_SANITIZE_EMAIL — удалить все символы, запрещенные в e-mail адресе
- FILTER_SANITIZE_URL — удалить все символы, запрещенные в URL адресе
- FILTER_SANITIZE_NUMBER_INT — удалить все символы, кроме целых чисел
- FILTER_SANITIZE_NUMBER_FLOAT — удалить все символы, кроме чисел с плавающей точкой
- FILTER_SANITIZE_MAGIC_QUOTES — выполнить addslashes ()
Фильтры проверки
- FILTER_VALIDATE_INT — проверяет значение как целое. С флагами:
- min_range — задает минимальное целое число
- max_range — задает максимальное целое число
- FILTER_FLAG_ALLOW_OCTAL — разрешает восьмеричные числа
- FILTER_FLAG_ALLOW_HEX — разрешает шестнадцатеричные числа
- FILTER_VALIDATE_BOOLEAN — Возвращает TRUE для значений «1», «true», «on» и «yes», иначе — FALSE
- FILTER_VALIDATE_FLOAT — проверяет значение как число с плавающей точкой
- FILTER_VALIDATE_REGEXP — проверяет значение на соответствие PERL-совместимому регулярному выражению
- FILTER_VALIDATE_URL — проверяет значение, как URL. С флагами:
- FILTER_FLAG_SCHEME_REQUIRED — соответствие RFC (http://example)
- FILTER_FLAG_HOST_REQUIRED — наличие имени хоста (http://www.example.com)
- FILTER_FLAG_PATH_REQUIRED — наличие пути после имени хоста (www.example.com/example1/test2/)
- FILTER_FLAG_QUERY_REQUIRED — наличие строки запроса в URL (example.php?name=Peter&age=37)
- FILTER_VALIDATE_EMAIL — проверяет значение, как e-mail адрес
- FILTER_VALIDATE_IP — проверяет значение как IPv4 или IPv6 адрес. С флагами:
- FILTER_FLAG_IPV4 — значение должно быть правильным IPv4 адресом (255.255.255.255)
- FILTER_FLAG_IPV6 — значение должно быть правильным IPv6 адресом ( 2001:0db8:85a3:08d3:1319:8a2e:0370:7334)
- FILTER_FLAG_NO_PRIV_RANGE — значение должно соответствовать RFC, и не входить в частные диапазоны (192.168.0.1, 10.0.0.1, …)
- FILTER_FLAG_NO_RES_RANGE — значение не должно содержать зарезервированные IP адреса, этот флаг принимает и IPv4 и IPv6 (255.255.255.255)
filter_var () была добавлена в PHP 5.2.0.
Ответить
Метки
Праздники
Пятничный клип
Ajax
Android
Animation
Audio
Browser
Calendar
Chart
Chip
CMS
CodeIgniter
Color
Concept
CSS
DigiCam
Domain
File manager
Gallery
Google
HTML
ico
Image
JavaScript
jQuery
Lightbox
Linux
Menu
Mobile
MooTools
Navigation
Netbook
Nokia
Opera
OS
PHP
Plot
Realization
Search
Tools
Tricks
UI
Video
Visualization
Wi-Fi
Комментарии
- Vizor к записи Coin Slider — jQuery-плагин для пролистывания изображений
- InetMarketingWS к записи Coin Slider — jQuery-плагин для пролистывания изображений
- ZerReamRets к записи Bomfunk MC's — Freestyler
- lmauzer к записи Timbaland & Nelly Furtado, Soshy — Morning After Dark
- Vizor к записи MeeGo — новая открытая платформа от Nokia и Intel
Ratings
- Расширение функционала HTML-таблиц с помощью JavaScript




(5.00 out of 5) - Неунывающий сноубордист и настоящий доктор Хаус




(5.00 out of 5) - World Builder — просто потрясающий ролик




(5.00 out of 5) - QuakeLive




(5.00 out of 5) - Date Range Picker v. 2 — выбор даты с помощью jQuery UI и jQuery UI CSS Framework




(5.00 out of 5) - Индустриальный пейзаж




(5.00 out of 5) - Google Chrome 2.0 beta




(5.00 out of 5) - GalleryView — jQuery-плагин для галереи с гибкими настройками




(5.00 out of 5) - ALARM — просто отпадный мувик




(5.00 out of 5) - Видео-обзор пользовательского интерфейса HTC Hero на платформе Android




(5.00 out of 5)
(9 votes, average: 4.78 out of 5)

