【发布时间】:2016-06-28 22:28:26
【问题描述】:
所以如果用户输入 1,000.00,这是一个有效数字。如果用户输入 1,0,000,00.0000,0 会怎样 您会在这里看到多个错误,其中您的值不能是 1,0... 或 000,00,因为它必须在逗号后至少有 3 个数字。为了进一步扩展它,数字中的点后面不能有逗号。
$keyword = $_POST['keyword'];
if (preg_match('/0/',$keyword) ||preg_match('/1/',$keyword) ||preg_match('/2/',$keyword)||preg_match('/3/',$keyword) ||preg_match('/4/',$keyword) || preg_match('/5/',$keyword) || preg_match('/6/',$keyword) || preg_match('/7/',$keyword) ||preg_match('/8/',$keyword) ||preg_match('/9/',$keyword) ||preg_match('/-/',$keyword) ||preg_match('/+/',$keyword) || preg_match('/,/',$keyword) ) {
$keywordtest = $keyword;
if ($keyword[0] == '+' || $keyword[0] == '-')
{
$keywordtest = substr_replace($keyword, '1', 0, 1);
echo $keywordtest;
}
if (preg_match('/,/',$keyword))
{
$x = 0;
while(true)
{
$findme = ',';
$pos = strpos($keyword, $findme);
if ($pos !== false)
{
$posArray[x] = $pos;
$x = x + 1;
if (x == 10)
break;
}
}
$numberCheck = posArray[x-1];
if (is_numeric($numberCheck))
{
}
else
{
echo "false '{$keyword}' is not numeric", PHP_EOL;
return 0;
}
$numberCheck = posArray[x+1];
if (is_numeric($numberCheck))
{
}
else
{
echo "false '{$keyword}' is not numeric", PHP_EOL;
return 0;
}
$numberCheck = posArray[x+2];
if (is_numeric($numberCheck))
{
}
else
{
echo "false '{$keyword}' is not numeric", PHP_EOL;
return 0;
}
$numberCheck = posArray[x+3];
if (is_numeric($numberCheck))
{
}
else
{
echo "false '{$keyword}' is not numeric", PHP_EOL;
return 0;
}
}
test_numeric($keywordtest,$keyword);
return 0;
}
else
{
echo "false '{$keyword}' is not numeric", PHP_EOL;
}
function test_numeric($keywordtest,$keyword)
{
if (is_numeric($keywordtest)){
echo "true '{$keyword}' is numeric", PHP_EOL;
}
return 0;
}
?>
【问题讨论】:
-
我在这里所做的是,我将 + 和 - 转换为数字并将其传递给 is_numeric 函数并将结果作为真或假返回。但是,我将如何测试逗号前后的数字是否为有效数字。我尝试放置逗号位置并检查之前和之后的数字是否是有效数字,但是我认为这是效率最低的方法,并且此代码不起作用
-
能否正确格式化您的代码?
-
格式有问题?我真的只需要知道如何使用逗号。接收一个字符串并检查它是否是一个有效的数字