Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查昏迷';php中给定字符串/数字的有效性_Php_Numbers_Format_Comma - Fatal编程技术网

检查昏迷';php中给定字符串/数字的有效性

检查昏迷';php中给定字符串/数字的有效性,php,numbers,format,comma,Php,Numbers,Format,Comma,因此,如果用户输入1000.00,这是一个有效数字。如果用户输入1,0000,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_mat

因此,如果用户输入1000.00,这是一个有效数字。如果用户输入1,0000,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;
}
?>

您将希望与过滤器\u验证\u浮动和过滤器\u标志\u允许\u千标志结合使用

那么这就很简单了:

// $val == 100000
$val = filter_var('100,000.00', FILTER_VALIDATE_FLOAT, array('flags' => FILTER_FLAG_ALLOW_THOUSAND));

// $val == -100000
$val = filter_var('-100,000.00', FILTER_VALIDATE_FLOAT, array('flags' => FILTER_FLAG_ALLOW_THOUSAND));

// $val === false (invalid)
$val = filter_var('100,000.00,00', FILTER_VALIDATE_FLOAT, array('flags' => FILTER_FLAG_ALLOW_THOUSAND));
您将希望与过滤器\验证\浮点数和过滤器\标志\允许\浮点数结合使用

那么这就很简单了:

// $val == 100000
$val = filter_var('100,000.00', FILTER_VALIDATE_FLOAT, array('flags' => FILTER_FLAG_ALLOW_THOUSAND));

// $val == -100000
$val = filter_var('-100,000.00', FILTER_VALIDATE_FLOAT, array('flags' => FILTER_FLAG_ALLOW_THOUSAND));

// $val === false (invalid)
$val = filter_var('100,000.00,00', FILTER_VALIDATE_FLOAT, array('flags' => FILTER_FLAG_ALLOW_THOUSAND));

我在这里做的是,我将+和-转换成数字,并将其传递给is_numeric函数,然后返回结果true或false。但是,如何测试逗号前后的数字是否有效。我试着把逗号的位置,并检查之前和之后的数字是否是有效的数字,但我认为这是最不有效的方法,这段代码不工作。你能不能正确格式化你的代码?格式有问题吗?我真的需要知道如何使用逗号。接收a字符串并检查它是否为有效数字我在这里做的是,我将+和-转换为数字,并将其传递给is_numeric函数,然后返回结果true或false。但是,如何测试逗号前后的数字是否有效。我试着把逗号的位置,并检查之前和之后的数字是否是有效的数字,但我认为这是最不有效的方法,这段代码不工作。你能不能正确格式化你的代码?格式有问题吗?我真的需要知道如何使用逗号。输入a字符串并检查它是否是有效的数字还有其他数字吗?比如说,如果他们把203221121.12和任何可能的数字放在一起,是的。只要它可以用PHP的浮点表示。还有什么其他的数字吗?比如说,如果他们把203221121.12和任何可能的数字放在一起,是的。只要它可以用PHP的浮点表示。