PHP从数字字符串中删除逗号

use*_*428 47 php string replace numbers comma

在PHP中,我有一个包含所有字符串的变量数组.存储的某些值是带逗号的数字字符串.

我需要的:

一种从字符串中修剪逗号的方法,只对数字字符串执行此操作.这并不像看起来那么简单.主要原因是以下失败:

$a = "1,435";

if(is_numeric($a))
    $a = str_replace(',', '', $a);
Run Code Online (Sandbox Code Playgroud)

$a = "1435"是因为数字而失败.但$a = "1,435"不是数字.因为我得到的一些字符串将是带逗号的常规句子,所以我不能在每个字符串上运行字符串替换.

JJJ*_*JJJ 90

反过来说:

$a = "1,435";
$b = str_replace( ',', '', $a );

if( is_numeric( $b ) ) {
    $a = $b;
}
Run Code Online (Sandbox Code Playgroud)


Ken*_*iah 21

没有测试,但可能是类似的 if(preg_match("/^[0-9,]+$/", $a)) $a = str_replace(...)


Jay*_*ela 18

最简单的是:

$var = intval(preg_replace('/[^\d.]/', '', $var));
Run Code Online (Sandbox Code Playgroud)

或者如果你需要浮动:

$var = floatval(preg_replace('/[^\d.]/', '', $var));
Run Code Online (Sandbox Code Playgroud)

  • 你已经忘记了负数的可能性。您需要添加 - $var = floatval(preg_replace('/[^\d\.\-]/', '', $var)); (2认同)

小智 6

试试这个。这对我有用

number_format(1235.369,2,'.','')

如果你使用 number_format 这样的 number_format(1235.369,2)答案将是1,235.37

但如果你使用如下

number_format(1235.369,2,'.','')答案将是1235.37

它正在删除“1,235.37”的“,”

  • 作品!但问题是从**现有数字字符串**中删除逗号,而不是在**任何数值**上格式化它。如果您尝试“number_format('1,235.369',2,'.','')”,它将不起作用。 (2认同)

orr*_*rrd 6

听起来您正在寻找的理想解决方案是filter_var()

$a = filter_var($a, FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_THOUSAND);
Run Code Online (Sandbox Code Playgroud)

(请注意,它使用的是 FILTER_VALIDATE_FLOAT 而不是 FILTER_VALIDATE_INT,因为它当前没有 FILTER_FLAG_ALLOW_THOUSAND 选项)。