这对我来说不是一个大问题(据我所知),它更多的是我感兴趣的东西。但是,使用is_numeric
而不是preg_match
(反之亦然)来验证用户输入值有什么主要区别(如果有的话)。PHP is_numeric或preg_match 0-9验证
例一:
<?php
$id = $_GET['id'];
if (!preg_match('/^[0-9]*$/', $id)) {
// Error
} else {
// Continue
}
?>
例二:
<?php
$id = $_GET['id'];
if (!is_numeric($id)) {
// Error
} else {
// Continue
}
?>
我认为两者不完全一样,但有可能导致问题以后就任何具体的区别是什么?有没有一种“最好的方式”,或者我没有看到哪种让他们与众不同的东西。
所以用正则表达式你会如何纠正前导零等问题?这可能会给我带来问题,因为这是我一直在使用的方法。如果我只是想验证它是一个整数(4,8,15,16,23,42,108等),没有前导零,没有小数点,没有负数,这将如何实现? – Joe
@JoeMottershaw - 我将编辑答案以添加更多信息.... – Spudley
谢谢Spudley,这是一个非常明确的解释 - 绝对能更好地理解他们的差异。看起来我会回去调整我的一些代码! :) – Joe