在 php 中检查给定字符串/数字中 coma 的有效性

Posted

技术标签:

【中文标题】在 php 中检查给定字符串/数字中 coma 的有效性【英文标题】:checking coma's validity in a given string/number in php 【发布时间】: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 函数并将结果作为真或假返回。但是,我将如何测试逗号前后的数字是否为有效数字。我尝试放置逗号位置并检查之前和之后的数字是否是有效数字,但是我认为这是效率最低的方法,并且此代码不起作用 能否正确格式化您的代码? 格式有问题?我真的只需要知道如何使用逗号。接收一个字符串并检查它是否是一个有效的数字 【参考方案1】:

您需要将 filter_var 与 FILTER_VALIDATE_FLOAT filter type 和 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));

【讨论】:

还有哪些数字? 说如果他们把 203,221,121.12 像字面上任何可能的数字一样放 嗯,是的。只要能用PHP的float表示即可。

以上是关于在 php 中检查给定字符串/数字中 coma 的有效性的主要内容,如果未能解决你的问题,请参考以下文章

PHP - 如何检查一行中字符串的前 4 个值是不是为数字

PHP 判断数据类型

如何检查一个php字符串是不是只包含英文字母和数字?

使用数字格式检查给定字符串是不是为有效货币

如何检查一个整数是不是在 PHP 中的数字范围内?

如何检查给定的 c++ 字符串或 char* 是不是仅包含数字?