嗯,这是一个老帖子,但无论如何我会在这里发表一些评论。
1)你真的不应该强迫用户输入正确的数字,当然你在前端的验证将涵盖这一点,但绝不假设它是进入“后端”的情况。
请考虑以下内容,而不是将其放在用户身上:
// remove chars
$number = preg_replace('/[\D]/', '', $number);
//unit test sanitizer
filter_var($number, FILTER_SANITIZE_NUMBER_INT)
// check number
preg_match('/^[0-9]{10}$/', $zip)示例:读入用户输入,如果输入足够的数字查找最接近的匹配邮政编码等。(我实际上在网站上使用过一次)当然设置前端检查是有用的,但如果失败。
$number = 'z 02012s';
// remove chars
$number = preg_replace('/[\D]/', '', $number);
//unit test sanitizer
$number = filter_var($number, FILTER_SANITIZE_NUMBER_INT);
// check number
if (preg_match('#^[0-9]{5}$#', $number) === 1) {
//(optional) lookup closest zip using your DB.
$look_zip = $db->getClosestZipMatch($number);
} else {
echo $number . " isn't 5 digits only, do something.";
}