Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:将字符串中的所有浮点替换为小数点后两位_Php_Regex - Fatal编程技术网

PHP:将字符串中的所有浮点替换为小数点后两位

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

如果我有一个字符串:“这个数字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);

有什么建议吗?

在某些情况下,回合不会结束。轮到我了。您不能在替换字符串中使用
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那么实际需要的行为是什么?