验证表单输入:数字
问题
希望确保在一个表单输入框中输入了一个数。例如,不希望一个人说他的年龄oldenough(足够老)或者是tangerine(桔红色),而应当提供类似13或56的值。
解决方案
如果需要一个整数,可以使用FILTER_VALIDATE_INT过滤器:
用FILTER_VALIDATE_INT验证数字
$age = filter_input(INPUT_POST, 'age', FILTER_VALIDATE_INT);
if($age === false){
print 'Submitted age is invalid.';
}
如果需要一个小数,可以使用FILTER_VALIDATE_FLOAT过滤器
用FILTER_VALIDATE_FLOAT验证数字
$price = filter_input(INPUT_POST, 'age', FILTER_VALIDATE_FLOAT);
if($price === false){
print 'Submitted price is invalid.';
}
使用正则表达式,这在一些验证中也可能很有用
用正则表达式验证数字
// 这个模式匹配一个可选的正负号,
// 然后至少有一位
if(! preg_match('/^-?\d+$/',$_POST['rating'])){
print 'Your rating must be an integer.';
}
//这个模式匹配一个可选的正负号,然后是小数号前的数位(可选),一个可选的小数点,然后至少有一位
if(! preg_match('/^-?\d*.?\d+$/',$_POST['rating'])){
print 'Your rating must be a number.';
}
浙公网安备 33010602011771号