Input validation with filter functions

Introduction
Although PHP has a lot of filter functions available, I found that still to many people are using (often incorrect) regular expressions to validate user input. The filter extension is simple, standard available and will fulfill the common validations. Below some pratical examples and things to consider when working with PHP filter functions.

Which are available?
Below a shameless copy paste of the PHP documentation.

  • filter_has_var — Checks if variable of specified type exists
  • filter_id — Returns the filter ID belonging to a named filter
  • filter_input_array — Gets external variables and optionally filters them
  • filter_input — Gets a specific external variable by name and optionally filters it
  • filter_list — Returns a list of all supported filters
  • filter_var_array — Gets multiple variables and optionally filters them
  • filter_var — Filters a variable with a specified filter

Pratical use

Sanitizing
“Filter input escape output” every developer knows this but it is a repetitive job but with the filter extension filterering input became a lot easier. When you correctly filter input you drastically lower the change of application vulnerabilities.

Sanitizing a single variable

$sText = ' ';
$sText = filter_var($sText, FILTER_SANITIZE_STRING);
echo $sText; // This is a comment from a alert("scriptkiddie");

Sanitizing multiple variables, same principle as above but with an array, the filter will sanitize all values inside the array

filter_var_array($_POST, FILTER_SANITIZE_STRING);

Validating an email address

if(filter_var($sEmail, FILTER_VALIDATE_EMAIL) === false) {
     $this->addError('Invalid email address', $sEmail);
}

Validation a complete array
Validating all your data at once with a single filter will make your code clear, all in one place and is more easy to maintain an example below.

$aData = array(
	'student'	=> 'Sjoerd Maessen',
	'class'		=> '21',
	'grades' => array(
			'math' => 9,
			'geography' => 66,
			'gymnastics' => 7.5
	)
);

$aValidation = array(
	'student'	=> FILTER_SANITIZE_STRING,
	'class'		=> FILTER_VALIDATE_INT,
	'grades'	=> array(
				'filter' => FILTER_VALIDATE_INT,
				'flags'	 => FILTER_FORCE_ARRAY,
				'options'=> array('min_range'=>0, 'max_range'=>10))
);

echo '
';
var_dump(filter_var_array($aData, $aValidation));

/*array(3) {
  ["student"]=>
  string(14) "Sjoerd Maessen"
  ["class"]=>
  int(21) // Thats strange, my string is converted
  ["grades"]=>
  array(3) {
    ["math"]=>
    int(9)
    ["geography"]=>
    bool(false) // 66 is > 10
    ["gymnastics"]=>
    bool(false) // 7.5 is not an int
  }
}*/

Note: okay I did not expect that the string '21' would validate true against FILTER_VALIDATE_INT, after some more testing I also noticed that min_range and max_range only work with FILTER_VALIDATE_INT, when using floats or scalars the options are just ignored, so be aware!

The sanitizing examples above can be made easily more restrictive by adding flags like FILTER_FLAG_STRIP_LOW to the sanitize filter, FILTER_FLAG_STRIP_LOW will for example strip all characters that have a numerical value below 32.

Things to consider
Although the filter functions are some time available some of them aren't flawless, at some points the documentation is missing or very unclear. Another example is the filter_var validation for IPv6 addresses. (see bug report #50117). So it is always a good thing to check if the filter is really doing what you expect it does. Write testcases before using. If you use it correctly you can write your validations in the blink of an eye, and this extension will be your new best friend.

Links
Filter functions
Filter flags

Comments

4,050 responses to “Input validation with filter functions”

  1. Waynemam Avatar

    номер эвакуатора Мариуполь Номер эвакуатора Мариуполь – это ваш личный пропуск в мир оперативной помощи на дорогах. Это возможность быстро и без лишних хлопот заказать эвакуатор, избежав стресса и потери времени. Запишите его в свой мобильный телефон и будьте уверены, что в случае необходимости вы сможете оперативно связаться с надежной службой эвакуации.

  2. WalterLeaws Avatar
    WalterLeaws

    https://follicle.us.com/# buy generic propecia

  3. MarcusenUrb Avatar
    MarcusenUrb

    Generic Elavil: Amitriptyline – Elavil

  4. Michaelgob Avatar

    вскрытие замков Вскрытие авто – профессиональная помощь в открытии вашего автомобиля без повреждений кузова и замков. Оперативный выезд и гарантия качества.

  5. EdwardLaush Avatar
    EdwardLaush

    ivermectin 1% cream generic stromectol drug stromectol 3mg tablets

  6. StevenMor Avatar
    StevenMor

    https://fertilitypctguide.us.com/# where to buy generic clomid without prescription

  7. EdwardLaush Avatar
    EdwardLaush

    buy stromectol pills Iver Protocols Guide Iver Protocols Guide

  8. MarcusenUrb Avatar
    MarcusenUrb

    Iver Protocols Guide: Iver Protocols Guide – Iver Protocols Guide

  9. Michaelgob Avatar

    замена замков Профессиональное вскрытие замков любой сложности без повреждений. Круглосуточный выезд!

  10. Michaelwen Avatar

    Ремонт Москва Очистка кафеля Москва

  11. StevenMor Avatar
    StevenMor

    https://follicle.us.com/# Follicle Insight

  12. MarcusenUrb Avatar
    MarcusenUrb

    where can i get generic clomid without insurance: fertility pct guide – can i order cheap clomid no prescription

  13. StevenMor Avatar
    StevenMor

    https://follicle.us.com/# cost cheap propecia

  14. WalterLeaws Avatar
    WalterLeaws
  15. MarvinTox Avatar

    Сериалы Aesthetic Files – это не просто набор данных, это калейдоскоп впечатлений, где каждый файл – отражение моей души, увлечений и взглядов на мир. Здесь сериалы переплетаются с пылью старых книг, а жизнь, во всем ее многообразии, находит свое отражение в каждом пикселе.

  16. MarcusenUrb Avatar
    MarcusenUrb

    get generic propecia tablets: Follicle Insight – generic propecia tablets

  17. Michaelles Avatar
    Michaelles

    Follicle Insight: cost of propecia prices – Follicle Insight

  18. WalterLeaws Avatar
    WalterLeaws
  19. Michaelles Avatar
    Michaelles

    Elavil: Elavil – Elavil

  20. ShelbySKINI Avatar

    скачать бесплатно версию тикток мод скачать тик ток мод скачать бесплатно последняя

  21. Lloydlepay Avatar

    If you need help learning how to create account in betwinner, the full guide is available at https://bet-promo-codes.com/sportsbook-reviews/betwinner-registration/ — perfect for new users.

  22. Michaelkacew Avatar
    Michaelkacew

    https://writefreely.ethibox.fr/larrybrown190/experience-ultimate-home-comfort-with-a-gas-fireplace Gas fireplaces have come a long way in terms of energy efficiency and safety features compared to older systems. During my research into different brands is that even within the same fuel type, heat distribution and control precision can differ significantly. Certain manufacturers focus on advanced controls and customizable flame settings, while others are built around long-term reliability and simpler engineering. Being aware of these distinctions really helps when choosing a fireplace that fits both the house layout and how often it will be used during the heating season.

  23. StevenMor Avatar
    StevenMor

    https://amitrip.us.com/# AmiTrip Relief Store

  24. MarcusenUrb Avatar
    MarcusenUrb

    cheap propecia for sale: Follicle Insight – get generic propecia pills

  25. StevenMor Avatar
    StevenMor

    https://follicle.us.com/# Follicle Insight

  26. Jeffreypraph Avatar

    погода краби октябрь пхукет краби как добраться

  27. EdwardLaush Avatar
    EdwardLaush

    fertility pct guide fertility pct guide can i get clomid pills

  28. Michaelles Avatar
    Michaelles

    Iver Protocols Guide: ivermectin coronavirus – ivermectin 3mg

  29. MarcusenUrb Avatar
    MarcusenUrb

    get propecia online: order propecia for sale – Follicle Insight

  30. RichardFes Avatar

    работа в корее по контракту работа в корее с проживанием

  31. EdwardLaush Avatar
    EdwardLaush

    buy Elavil Amitriptyline Amitriptyline

  32. Michaelles Avatar
    Michaelles

    Elavil: Elavil – Generic Elavil

  33. ShelbySKINI Avatar

    тикток версия мод 2026 скачать скачать тик ток на андроид мод

  34. Michaelkacew Avatar
    Michaelkacew

    https://www.diveboard.com/jasonejohnson11/posts/how-to-choose-the-right-gas-fireplace-for-your-home-B2nW6mG Gas fireplaces have evolved significantly in terms of energy efficiency and safety features compared to earlier generations. What I noticed while researching different manufacturers is that even within the same fuel type, heat distribution and control precision can vary a lot. Certain manufacturers focus on smart controls and flame customization, while others are built around long-term reliability and simpler engineering. Understanding these differences really helps when choosing a fireplace that fits both the house layout and regular usage patterns during the heating season.

  35. WalterLeaws Avatar
    WalterLeaws

    https://follicle.us.com/# cheap propecia for sale

  36. ShelbySKINI Avatar

    тик ток мод тг андроид скачать 2026 скачать мод тик ток последняя версия 2026

  37. WalterLeaws Avatar
    WalterLeaws

    https://follicle.us.com/# get propecia price

  38. Michaelkacew Avatar
    Michaelkacew

    https://jasonejohnsn.wordpress.com/2026/01/30/exploring-the-benefits-of-gas-fireplaces-for-comfortable-living/ Gas fireplaces have come a long way in terms of energy efficiency and safety features compared to older systems. During my research into different brands is that even within the same fuel type, heat distribution and control precision can vary a lot. Certain manufacturers focus on smart controls and flame customization, while others emphasize durability and simpler mechanical designs. Being aware of these distinctions really helps when choosing a fireplace that fits both the house layout and how often it will be used during the heating season.

Leave a Reply

Your email address will not be published. Required fields are marked *