par
Hubert Roksor » 06 nov. 2007, 23:10
Je serais curieux de savoir ce qui est le plus rapide
De tête, je dirais is_numeric() (qui ne s'applique pas ici), ctype_digit(), strspn(), preg_match(), toute autre solution.
À mon avis, la meilleure méthode serait d'utiliser filter_input(). Sinon, preg_match('#^[0-9]+$#D')... n'oubliez pas le D final siouplé.
PS: hmm, je dois avoir bonne mémoire. Sous PHP 5.2.4 et sur 1 000 000 itérations, ce qui signifie que le nombre à gauche et la durée (approximative) de l'opération en microsecondes :
Code : Tout sélectionner
0.6759 is_numeric($var);
0.7418 ctype_digit($var);
1.8111 !isset($var[strspn($var, '1234567890')]);
2.8665 strspn($var, '1234567890') === strlen($var);
3.4812 preg_match('#^[0-9]+$#D', $var);
1.9168 filter_var($var, FILTER_VALIDATE_INT);
1.9986 filter_var($var, FILTER_VALIDATE_INT) >= 0;
3.8433 filter_var($var, FILTER_VALIDATE_INT, array('options'=>array('min_range' => 0)));
[quote="HyWaN"]Je serais curieux de savoir ce qui est le plus rapide[/quote]
De tête, je dirais is_numeric() (qui ne s'applique pas ici), ctype_digit(), strspn(), preg_match(), toute autre solution.
À mon avis, la meilleure méthode serait d'utiliser filter_input(). Sinon, preg_match('#^[0-9]+$#D')... n'oubliez pas le D final siouplé.
PS: hmm, je dois avoir bonne mémoire. Sous PHP 5.2.4 et sur 1 000 000 itérations, ce qui signifie que le nombre à gauche et la durée (approximative) de l'opération en microsecondes :
[code]0.6759 is_numeric($var);
0.7418 ctype_digit($var);
1.8111 !isset($var[strspn($var, '1234567890')]);
2.8665 strspn($var, '1234567890') === strlen($var);
3.4812 preg_match('#^[0-9]+$#D', $var);
1.9168 filter_var($var, FILTER_VALIDATE_INT);
1.9986 filter_var($var, FILTER_VALIDATE_INT) >= 0;
3.8433 filter_var($var, FILTER_VALIDATE_INT, array('options'=>array('min_range' => 0)));[/code]