[PHP] Filtrowanie danych
Dane, które użytkownik wysyła do serwisu poprzez formularze należy z góry traktować jako potencjalnie złośliwe. W związku z tym jakiekolwiek dane przyjmowane do skryptu muszą być filtrowane. Do filtrowania można użyć własnego mechanizmu opartego na wyrażeniach regularnych lub skorzystać z wbudowanych w PHP funkcji filtrowania. W tym wpisie zajmiemy się właśnie funkcjami filtrującymi, które oferuje PHP.
trim
Na początek funkcja trim, która usuwa z początku i końca stringu białe znaki lub inne. Funkcja ta przyjmuje 2 argumenty, w tym 1 wymagany. Wymaganym argumentem jest string do przefiltrowania. Drugim argumentem, który można przekazać do funkcji trim jest (string) $character_mask - znaki, które mają zostać usunięte.
Przykład
$text = ' Jakiś tekst ';
echo trim($text);
// Wyświetli 'Jakiś tekst'
Funkcja strip_tags
Funkcja strip_tags czyści podany jako pierwszy argument string ze znaków PHP i HTML. Funkcja może przyjąć też drugi argument - (mixed) $allowable_tags, w którym można przekazać znaki, które nie mają być usuwane.
Przykład
$text_1 = '<?Jakiś <b>tekst</b>?>'; $text_2 = '<p>Jakiś <b>tekst</b></p>'; echo strip_tags($text_1);
// Wyświetli 'Jakiś tekst'echo strip_tags($text_2, '<p><b>');
// Wyświetli '<p>Jakiś <b>tekst</b></p>'
Od PHP 7.4.0:
echo strip_tags($text_2, ['p', 'b']);
// Wyświetli '<p>Jakiś <b>tekst</b></p>'
Funkcja htmlentities
Funkcja htmlentities zamienia wszystkie specjalne znaki takie jak <, >, &, " na encje HTML. Funkcja ta przyjmuje 4 argumenty, w tym 1 wymagany. Wymaganym argumentem jest string do przefiltrowania. Kolejne trzy argumenty, które można przekazać do funkcji to:
- (int) $flags - flagi, które mają ustawić sposób konwersji (przekazywane jako stałe);
- (string) $encoding - kodowanie użyte przy konwersji znaków;
- (bool) $double_encode - domyślnie nawet encje HTML zostaną przekonwertowane, jeśli $double_encode zostanie ustawione na FALSE zmieniane będą pojedyncze znaki specjalne;
Przykład
$text = '<Przykładowy&tekst>';
echo htmlentities($text);
// Wyświetli '<Przykładowy&tekst>'
Funkcja filter_var
Funkcja filter_var filtruje zmienną ustawionym filtrem. Funkcja przyjmuje 3 argumenty, w tym 1 wymagany. Wymaganym argumentem jest zmienna z danymi do przefiltrowania. Kolejne dwa argumenty to:
- (int) $filter - filtr, którym zmienna ma być filtrowana;
- (mixed) $options - dodatkowe opcje dla wybranego filtra (jeśli obsługuje);
Przykład
echo filter_var('12345', FILTER_VALIDATE_INT);
echo filter_var('2.000', FILTER_VALIDATE_FLOAT);
echo filter_var('test@example.com', FILTER_VALIDATE_EMAIL);
echo filter_var('127.0.0.1', FILTER_VALIDATE_IP);
Pełna lista filtrów wraz z opisami znajduje się w dokumentacji.
Komentarze
Prześlij komentarz
Dzięki za komentarz!