[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 '&lt;Przykładowy&amp;tekst&gt;'

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

Popular

[C++] Jak obliczyć pole i obwód trapezu?

[PHP] Jak pobrać adres strony?

[HTML] Jak wyśrodkować tekst?