Wiem, wiem, premiera PHP 5.2.0 dawno za nami. Ale warto wspomnieć, że pojawił się nowy zbiór funkcji w tej wersji – Filter. W zamyśle autorów mają one nam pomóc z różnego rodzaju walidacją oraz filtrami.
W zbiorze mamy m.in. funkcję filter_var( mixed $variable [, int $filter=FILTER_DEFAULT [, mixed $options ]]).
Dzięki niej tworzenie nowych filtrów w aplikacjach PHP stało się jeszcze prostsze. Chcemy sprawdzić, czy podany przez użytkownika adres e-mail jest poprawny? Nic prostszego:
1 2 3 |
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo "Niepoprawny e-mail"; } |
Dostępne walidujące filtry:
- FILTER_VALIDATE_INT
opcjonalne flagi: min_range, max_range, FILTER_FLAG_ALLOW_OCTAL, FILTER_FLAG_ALLOW_HEX - FILTER_VALIDATE_BOOLEAN
- FILTER_VALIDATE_FLOAT
- FILTER_VALIDATE_REGEXP
- FILTER_VALIDATE_URL
opcjonalne flagi: FILTER_FLAG_SCHEME_REQUIRED (http://), FILTER_FLAG_HOST_REQUIRED (www.example.com), FILTER_FLAG_PATH_REQUIRE, FILTER_FLAG_QUERY_REQUIRED - FILTER_VALIDATE_EMAIL
- FILTER_VALIDATE_IP
opcjonalne flagi: FILTER_FLAG_IPV4, FILTER_FLAG_IPV6, FILTER_FLAG_NO_PRIV_RANGE (sprawdza czy nie zaweiera IP tj. 192.168.0.1, 10.0.0.1, …), FILTER_FLAG_NO_RES_RANGE
Mamy również dostęp do filtrów czysto filtrujących:
- FILTER_SANITIZE_STRING
(używane chociazby do usuwania tagów), opcjonalne flagi: FILTER_FLAG_NO_ENCODE_QUOTES, FILTER_FLAG_STRIP_LOW (wycina znaki ASCII poniżej 32), FILTER_FLAG_STRIP_HIGH (wycina znaki ASCII powyżej 127), FILTER_FLAG_ENCODE_LOW (koduje znaki ASCII poniżej 32), FILTER_FLAG_ENCODE_HIGH (koduje znaki ASCII powyżej 127), FILTER_FLAG_ENCODE_AMP (zamienia & na &) - FILTER_SANITIZE_ENCODED
(podobne zastosowanie do urlencode()), opcjonalne flagi: FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_LOW, FILTER_FLAG_ENCODE_HIGH - FILTER_SANITIZE_SPECIAL_CHARS
opcjonalne flagi: FILTER_FLAG_STRIP_LOW, FILTER_FLAG_STRIP_HIGH, FILTER_FLAG_ENCODE_HIGH - FILTER_SANITIZE_EMAIL
(usuwa wszystkie znaki niedozwolone w adresach e-mail) - FILTER_SANITIZE_URL
- FILTER_SANITIZE_NUMBER_INT
- FILTER_SANITIZE_NUMBER_FLOAT
- FILTER_SANITIZE_MAGIC_QUOTES
Mimo, że niektóre filtry są już zawarte w aktualnych frameworkach PHP, to na pewno nowa funkcja ułatwi tworzenie nowych.