Functies voor het toepassen van filters

Voor het werken met filters biedt PHP een viertal functies:

filter_var()
filter_var_array()
filter_input()
filter_input_array()

Van deze vier is de werking van filter_var() het makkelijkst te begrijpen. Ik zal daarom aan de hand van enkele voorbeelden met deze functie demonstreren hoe de verschillende soorten filters werken. Verderop in deze tutorial zal ik met de andere functies complexere voorbeelden van het gebruik van filters geven.

De filter_var() functie
Deze functie gebruik je om een filter toe te passen op een enkele variabele. De functie vereist dan ook een variabele en een filter om op de variabele toe te passen.

Voorbeeld 3: Syntax voor het gebruik van filter_var()

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

var_dump($leeftijd); // Output: int(19)
?>

In dit voorbeeld heb ik een variabele $leeftijd met daarin een waarde. Natuurlijk moet een leeftijd een integer zijn, dus dat gaan we controleren.

Hiervoor gebruiken we de filter FILTER_VALIDATE_INT in combinatie met de filter_var() functie. Ik maak gebruik van var_dump() zodat we duidelijk zien wat het resultaat van de filter_var() functie is.

Een filter kan standaard namelijk 3 verschillende resultaten geven. Als de filter slaagt wordt de gefilterde variabele in het juiste formaat gegeven. In andere gevallen geeft de filter FALSE terug als de filter mislukt of NULL als de variabele niet bestaat.

Voorbeeld 4: Resultaat bij een mislukte filter
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);

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


Als we dit alles in een scriptje opnemen zou het er als volgt uit kunnen zien:

Voorbeeld 5: Gebruik filter om leeftijd te valideren
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$leeftijd
= 19;
$leeftijd = filter_var($leeftijd, FILTER_VALIDATE_INT);

if($leeftijd === FALSE)
{

    echo 'De leeftijd is geen integer';
}

else
{
    echo 'De leeftijd is een integer: '.$leeftijd;
}

?>


Na toepassen van de filter blijk dat $leeftijd inderdaad een integer is en dat de waarde in de variabele $leeftijd te vinden is.

Voorbeeld 6: Escape alle HTML tekens in een string
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
$string
= 'Deze string <b>bevat</b> verschillende <i>html</i> tags';
$string = filter_var($string, FILTER_SANITIZE_SPECIAL_CHARS);

echo $string;
?>


Dit scriptje zal als uitkomst hebben:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Deze string <b>bevat</b> verschillende <i>html</i> tags.

We hebben namelijk de FILTER_SANITIZE_SPECIAL_CHARS gebruikt om alle HTML tekens te escapen zodat de code gewoon weergegeven worden.

De filter_var_array() functie
Deze functie kunnen we gebruiken om filters toe te passen op waarden uit een array. De syntax van deze functie vereist een array met variabelen en een array met de toe te passen filters. Om ervoor te zorgen dat PHP begrijpt welke filter op welke variabele toegepast moet worden, is het vereist dat de keys van beide array overeenkomen en een string zijn.

Voorbeeld 7: Meerdere waarden tegelijk filteren
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
<?php
$gegevens
= array(
    'leeftijd' => '19 jaar',
    'string' => 'Deze string <b>bevat</b> verschillende <i>html</i> tags',
    'email' => '[email protected]' );

$filters = array(
    'leeftijd' => FILTER_VALIDATE_INT,
    'string' => FILTER_SANITIZE_SPECIAL_CHARS,
    'email' => FILTER_VALIDATE_EMAIL,
    'bestaat_niet' => FILTER_VALIDATE_INT );

$resultaat = filter_var_array($gegevens, $filters);

echo '<pre>';
var_dump($resultaat);
echo '</pre>';
?>

Het resultaat ziet er als volgt uit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
array(4)
{
  ["leeftijd"]=> bool(false)
  ["string"]=> string(87) "Deze string <b>bevat</b> verschillende <i>html</i> tags"
  ["email"]=>  string(17) "[email protected]"
  ["bestaat_niet"]=> NULL
}


In dit resultaat zien we dat de leeftijd geen integer was, de HTML tekens geescaped zijn en het email adres goedgekeurd is. Daarnaast zien we dat de filter onder de laatste key NULL als resultaat terug gegeven heeft. Dat komt omdat die key niet voorkwam in de originele array met gegevens.

« 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.