Flags en options

Tot op dit moment hebben we alleen nog de standaard instelling van verschillende filters gebruiken. Maar zoals ik eerder al aangaf hebben we ook de beschikking over verschillende flags en options die de werking van een bepaalde filter iets wijzigen. Flags en options worden als extra parameter(s) aan filter functies meegegeven.

Flags
Een flag die toe te passen is op alle filters is FILTER_NULL_ON_FAILURE. Deze flag zorgt ervoor dat de filters NULL in plaats van FALSE retourneren als een filter mislukt.

Voorbeeld 11: Return NULL als de filter mislukt

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$leeftijd
= '19 jaar';
$leeftijd = filter_var($leeftijd, FILTER_VALIDATE_INT, FILTER_NULL_ON_FAILURE);

var_dump($leeftijd); // Output: NULL
?>


Een ander voorbeeld van flags dat ik wil geven is er een met de FILTER_SANITIZE_STRING filter. Deze filter kent verschillende flags. Ik maak nu gebruik van de flag FILTER_FLAG_ENCODE_AMP. Deze flag zorgt ervoor dat een & in de input geencodeerd wordt.

Voorbeeld 12: Encoden van een &
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$input
= 'Een string met & erin';
$output = filter_var($input, FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_AMP);

echo $output;
?>

In eerste instantie lijkt er niets veranderd is als we $output echoen. Maar als we naar de bron van de pagina kijken, zien we dat de & wel degelijk geencodeerd is:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Een string met &#38; erin


Ook is het mogelijk om meerdere flags tegelijk toe te passen. Deze flags moeten dan gescheiden worden door een |.

Voorbeeld 13: Meerdere flags gebruiken
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
// $_POST['naam']: Johnny Weißmüller <b>Jr</b>
$naam = filter_input(INPUT_POST, 'naam' , FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_HIGH|FILTER_FLAG_ENCODE_LOW);
echo $naam;
?>

Wederom lijkt er niets veranderd maar de broncode wijst iets anders uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Johnny Weis&#223;m&#252;ller Jr.


Options
Naast flags zijn er ook nog een aantal filters waarbij een option meegegeven kan worden. Net als een flag worden options als extra parameter aan de filter functie meegegeven. Als er options meegegeven worden, wordt de derde parameter altijd een associatieve array met de options onder de key 'options'.

Voorbeeld 14: Filter integers in een bepaalde range
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$leeftijd
= 19;

$options = array('options' => array('min_range' => 20, 'max_range' => 25));
$leeftijd = filter_var($leeftijd, FILTER_VALIDATE_INT, $options);

var_dump($leeftijd); // Output: bool(false)
?>

De filter geeft nu FALSE terug omdat 19 niet in de range van 20 tot 25 valt.

Natuurlijk zijn al deze feiten ook weer te combineren in bijvoorbeeld de verwerking van een formulier. Als je echter flags of options gaat toepassen, zul je de array met filters multidimensionaal moeten maken. Per key krijg je dan weer een array met daarin de filter en eventuele flags of options.

Voorbeeld 15: De verwerking van een gepost formulier
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
/* Velden uit een POST formulier:
- leeftijd
- string
- email
*/


$filters = array(
    'leeftijd' => array (
            'filter' => FILTER_VALIDATE_INT,
            'options' => array('min_range' => 20, 'max_range' => 25)
        );

    'string' => array (
            'filter' => FILTER_SANITIZE_SPECIAL_CHARS,
            'flags' => FILTER_FLAG_ENCODE_HIGH|FILTER_FLAG_ENCODE_LOW
        );
    'email' => FILTER_VALIDATE_EMAIL,
    'bestaat_niet' => FILTER_VALIDATE_INT
);

$resultaten = filter_input_array(INPUT_POST, $filters);
?>

Dit voorbeeld laat duidelijk zien hoe de array met filters opgebouwd dient te worden als er zowel filters als flags of options toegepast worden.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Wat is externe data?
  3. Filters en constanten
  4. Functies voor het toepassen van filters
  5. Filteren van GET en POST waarden
  6. Flags en options
  7. Callback filter
  8. Slotwoord en referenties

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.