好吧,这是一篇旧帖子,但无论如何我都会在这里发表一些评论。
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.";
}