risposta-alla-domanda-sullo-sviluppo-web-bd.com

PHP: Il modo migliore per verificare se l'input è un numero valido?

Qual è il modo migliore per verificare se l'input è numerico?

  • 1-
  • +111+
  • 5XF
  • 0xf

Quel tipo di numeri non dovrebbe essere valido. Solo numeri come: 123, 012 (12), i numeri positivi dovrebbero essere validi. Questo è il mio codice attuale:

$num = (int) $val;
if (
    preg_match('/^\d+$/', $num)
    &&
    strval(intval($num)) == strval($num)
    )
{
    return true;
}
else
{
    return false;
}
65
medusa1414

ctype_digit è stato creato proprio per questo scopo.

66
user1479055

Io uso

if(is_numeric($value) && $value > 0 && $value == round($value, 0)){

per convalidare se un valore è numerico, positivo e integrale

http://php.net/is_numeric

Non mi piace molto ctype_digit in quanto non è leggibile come "is_numeric" e in realtà ha meno difetti quando si vuole davvero confermare che un valore è numerico.

38
Mathieu Dumoulin

filter_var()

$options = array(
    'options' => array('min_range' => 0)
);

if (filter_var($int, FILTER_VALIDATE_INT, $options) !== FALSE) {
 // you're good
}
18
John Conde
return ctype_digit($num) && (int) $num > 0
8
rdlowrey

Per PHP versione 4 o versioni successive:

<?PHP
$input = 4;
if(is_numeric($input)){  // return **TRUE** if it is numeric
    echo "The input is numeric";
}else{
    echo "The input is not numeric";
}
?>

Il modo più sicuro

if(preg_replace('/[0-9\.\-]/', '', $value) == ""){
  //if all made of numbers "-" or ".", then yes is number;
}
2
Kareem