PHP:将字符串中的所有浮点替换为小数点后两位
如果我有一个字符串:“这个数字1.2345,这是另一个6.7891224342”,我怎么能把它变成“这个数字1.23,这是另一个6.78” 我尝试了以下操作,但得到了零:PHP:将字符串中的所有浮点替换为小数点后两位,php,regex,Php,Regex,如果我有一个字符串:“这个数字1.2345,这是另一个6.7891224342”,我怎么能把它变成“这个数字1.23,这是另一个6.78” 我尝试了以下操作,但得到了零: $input_lines = $inc['abstractions']; $input_lines = preg_replace("/[-+]?[0-9]*\.?[0-9]+/m", round("$1", 2), $input_lines); 有什么建议吗?在某些情况下,回合不会结束。轮到我了。您不能在替换字符串中使用ro
$input_lines = $inc['abstractions'];
$input_lines = preg_replace("/[-+]?[0-9]*\.?[0-9]+/m", round("$1", 2), $input_lines);
有什么建议吗?在某些情况下,回合不会结束。轮到我了。您不能在替换字符串中使用
round
。您必须使用preg\u replace\u callback
或寻找正确的方法:
preg_replace('~(\d\.\d\d)\d+~', '$1', $input_lines);
注意:您不需要m
标志
我不确定您自己的模式,但是否采用了:
preg_replace('~(\.\d\d)\d+~', '$1', $input_lines);
(double)$input_lines
preg_replace(“~\d\.\d{2}\K\d+~”,“$s)
如果不需要对任何内容进行舍入。您说您想为6.7891224342
获取6.78
,您确定您不期望6.79
?否则,使用。圆在某些点上不会切割。它会循环。@Wiktor请发布您的无捕获解决方案作为答案。@pee2pee那么实际需要的行为是什么?