PHP从数字string中删除逗号
在PHP中,我有一个所有string的variables数组。 一些存储的值是用逗号的数字string。
我需要的:
从string中修剪逗号的方法,只对数字string执行此操作。 这不像看起来那么简单。 主要原因是以下失败:
$a = "1,435"; if(is_numeric($a)) $a = str_replace(',', '', $a);
这失败了,因为$a = "1435"
是数字。 但$a = "1,435"
不是数字。 因为我得到的一些string将是用逗号的正则句,所以我不能在每个string上运行一个stringreplace。
未经testing,但可能类似if(preg_match("/^[0-9,]+$/", $a)) $a = str_replace(...)
反过来这样做:
$a = "1,435"; $b = str_replace( ',', '', $a ); if( is_numeric( $b ) ) { $a = $b; }
最简单的将是:
$var = intval(preg_replace('/[^\d.]/', '', $var));
或者如果你需要浮动:
$var = floatval(preg_replace('/[^\d.]/', '', $var));
function cleanData($a) { if(is_numeric($a)) { $a = preg_replace('/[^0-9,]/s', '', $a); } return $a; }
试试这个,这个为我工作
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”的“,”
如果要从包含单词的string中的数字中删除逗号,最简单的方法是使用preg_replace_callback :
例:
$str = "Hey hello, I've got 12,500 kudos for you, spend it well"
function cleannr($matches) { return str_replace("," , "" , $matches["nrs"]); } $str = preg_replace_callback ("/(?P<nrs>[0-9]+,[0-9]+)/" , "cleannr" , $str);
输出:
“嘿,你好,我有12500的荣誉,花好了”
在这种情况下,模式(正则expression式)与接受的答案中给出的模式不同,因为我们不想删除其他逗号(标点符号)。
如果我们使用/[0-9,]+/
这里而不是/[0-9]+,[0-9]+/
输出将是:
“嘿,你好,我已经得到12500的荣誉,你花了很好”