par
Dr@ke » 07 avr. 2010, 08:50
FILTER_VALIDATE_INT
Il existe déjà les fonctions
is_int(),
is_numeric() et même mieux dans certains cas la fonction
ctype_digit(), donc pourquoi ce filtre existe ?
Et surtout quel est son intérêt ?
Réponse:
Ces options:
* min_range - valeur minimum
* max_range - valeur maximum
Ces Flags:
* FILTER_FLAG_ALLOW_OCTAL - allows octal number values
* FILTER_FLAG_ALLOW_HEX - allows hexadecimal number values
Exemple:
<?php
$min = 1;
$max = 10;
$min_max = array("options"=> array("min_range"=>$min, "max_range"=>$max));
$id = (isset($_GET['ID'])) ? filter_var($_GET['ID'], FILTER_VALIDATE_INT, $min_max) : null;
var_dump($id);
// null correspond à false dans un test if.
// Et filter_var retourne false en cas d'échec du test, donc ce test est valide ensuite si besoin:
if ($id) {
echo '$id n\'est pas null, est de type Int, possède une valeur entre 1 et 1O et n\'est pas Hexadécimal ni Octal';
}
?>
Ainsi non seulement on vérifie si la variable est de type
int mais en plus si sa valeur est comprise entre 1 et 10.
De plus,
sans les 2
flags, ni une valeur
Octal ni
Hexadécimal n'est autorisée.
Tout ceci avec un
isset() comme dans l'exemple et ce en une seule ligne.
Difficile de faire mieux

[u][b]FILTER_VALIDATE_INT[/b][/u]
Il existe déjà les fonctions [i]is_int()[/i], [i]is_numeric()[/i] et même mieux dans certains cas la fonction [i]ctype_digit()[/i], donc pourquoi ce filtre existe ?
Et surtout quel est son intérêt ?
[u][b]Réponse:[/b][/u]
[u]Ces options:[/u]
[i] * min_range - valeur minimum
* max_range - valeur maximum[/i]
[u]Ces Flags:[/u]
[i] * FILTER_FLAG_ALLOW_OCTAL - allows octal number values
* FILTER_FLAG_ALLOW_HEX - allows hexadecimal number values[/i]
[u]Exemple:[/u]
[php]<?php
$min = 1;
$max = 10;
$min_max = array("options"=> array("min_range"=>$min, "max_range"=>$max));
$id = (isset($_GET['ID'])) ? filter_var($_GET['ID'], FILTER_VALIDATE_INT, $min_max) : null;
var_dump($id);
// null correspond à false dans un test if.
// Et filter_var retourne false en cas d'échec du test, donc ce test est valide ensuite si besoin:
if ($id) {
echo '$id n\'est pas null, est de type Int, possède une valeur entre 1 et 1O et n\'est pas Hexadécimal ni Octal';
}
?>[/php]
Ainsi non seulement on vérifie si la variable est de type [i]int[/i] mais en plus si sa valeur est comprise entre 1 et 10.
De plus, [b]sans[/b] les 2 [i]flags[/i], ni une valeur [i]Octal[/i] ni [i]Hexadécimal[/i] n'est autorisée.
Tout ceci avec un [i]isset()[/i] comme dans l'exemple et ce en une seule ligne.
Difficile de faire mieux :wink: