从逗号分隔数字php获取int值

时间:2014-09-22 03:36:17

标签: php

如何在PHP中将整数的千位逗号分隔的字符串表示形式转换为整数值? (对于其他分隔符,有一般的方法吗?)

e.g. 1,000 -> 1000

编辑(感谢@ghost)理想情况下,应该处理小数,但我可以接受以小数点截断的解决方案。

3 个答案:

答案 0 :(得分:13)

如果简单,可以使用filter_var()

$number = '1,000';
$number = (int) filter_var($number, FILTER_SANITIZE_NUMBER_INT);
var_dump($number);

或者

$number = '1,000.5669';
$number = (float) str_replace(',', '', $number);
var_dump($number);

答案 1 :(得分:3)

您可以使用str_replace去除特定字符,并使用intval强制转换为整数。正则表达式过滤器也可用于确定输入字符串是否格式正确。以下是代码的外观:

<?php

function remove_delimiters_simple($string, $delimiter = ',') {
    // Removes all instances of the specified delimiter and cast as an integer
    // Comma (,) is the default delimiter
    return (int) str_replace($delimiter, '', $string);
}

function remove_delimiters_advanced($string, $delimiter = ',') {
    // Use preg_quote in case our delimiter is '/' for some reason
    // The regular expression should match validly formatted numbers using a delimiter
    // every 3 characters
    $valid_format_expression = sprintf(
        '/^\d{1,3}(%s\d{3})*$/',
        preg_quote($delimiter, '/')
    );

    // If not a validly formatted number, return null
    if (! preg_match($valid_format_expression, $string)) {
        return null;
    }

    // Otherwise, return the simple value
    return remove_delimiters_simple($string, $delimiter);
}

答案 2 :(得分:1)

如果使用PHP&gt; = 5.3,您可以使用numfmt_create(),例如:

$fmt = numfmt_create( 'nl_NL', NumberFormatter::TYPE_INT32 );
$num = "1,000";
echo numfmt_parse($fmt, $num); //gives 1000

注意:: nl_NL是您在格式编号中使用的区域设置,在使用numfmt_create

时应该相同