存储在我的数据库表中的典型值如下:
$value1 = "123,232,453";
$value2 = "123,232,453.45";
逗号和小数。我必须检测数据上传后数据输入是否有任何错误。上传过程对我来说是一个黑盒子,很可能会有一个number_format。
我试过
ctype_digit($value1)
要检查,但逗号没有任何帮助。
当值中有逗号时,有没有办法检查整数?
答案 0 :(得分:2)
您可以通过将输入视为字符串来简单地删除逗号:
$value1 = str_replace(',', '', $value1);
然后您可以使用正则表达式检查整数:
if (preg_match('/^-?\d+$/', $value1)) {
...
}
或者,如果允许使用小数,则可以使用is_numeric()
if (is_numeric($value1)) {
...
}
答案 1 :(得分:0)
检查逗号:
if(strpos($value, ",")){
// there is a comma
}else{
// there is no comma
}
答案 2 :(得分:0)
使用更具功能性的风格并避免正则表达式可以这样做:
$values[] = "123,232,453";
$values[] = "123,232,453.45";
$values[] = "123,232,453.45b";
$result = array_map(
function ($val) {
return array_reduce(
explode(",", $val),
function ($carry, $item) {
return $carry && filter_var($item, FILTER_VALIDATE_FLOAT) !== false;
}, true
);
}, $values
);
var_dump($result);
这将在cli上输出以下内容。最后一个元素将为false,因为最后一个测试用例包含无效数字。
array(3) {
[0] =>
bool(true)
[1] =>
bool(true)
[2] =>
bool(false)
}
对于values
中的所有项目,它会展开,
处的项目,然后使用过滤器检查每个结果是否为有效的浮点数/数字。