Je me demandais quel serait le meilleur moyen de valider un nombre entier. Je voudrais que cela fonctionne avec des cordes aussi bien, pour que je puisse à quelque chose commePHP validant les entiers
(string) 00003 -> (int) 3 (valide)
(string) -027 -> (int) -27 (valide)
(int) 33 -> (int) 33 (valide)
(string) '33a' -> (FAUX) (invalide)
C'est ce que je Va jusqu'à maintenant:
function parseInt($int){
//If $int already is integer, return it
if(is_int($int)){return $int;}
//If not, convert it to string
$int=(string)$int;
//If we have '+' or '-' at the beginning of the string, remove them
$validate = ($int[0] === '-' || $int[0] === '+')?substr($int, 1):$int;
//If $validate matches pattern 0-9 convert $int to integer and return it
//otherwise return false
return preg_match('/^[0-9]+$/', $validate)?(int)$int:FALSE;
}
Pour autant que j'ai testé, cette fonction fonctionne, mais cela ressemble à une solution de contournement maladroite.
Existe-t-il un meilleur moyen d'écrire ce genre de fonction. J'ai aussi essayé
filter_var($foo, FILTER_VALIDATE_INT);
mais il n'accepter des valeurs comme '0003', '-0', etc.
Merci Je vais essayer de combiner ctype_digit ou is_numeric avec autre chose. Pas exactement ce que je cherchais, mais assez proche. – Mikk