Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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_Null_Preg Replace_Zero - Fatal编程技术网

Php 用一个简单的预替换删除结束零?

Php 用一个简单的预替换删除结束零?,php,regex,null,preg-replace,zero,Php,Regex,Null,Preg Replace,Zero,我会用php_replace删除结尾的零,这样我会有一个更好的函数 价值: $value = 123.12300; 当前功能: return preg_match('#[.,][0-9]+[0]+$#', $value) ? preg_replace('#[0]+$#', '', $value) : $value; return preg_replace('#([.,]{0,1}\d+)[0]+$#', '\\1', $value); 另一个功能: return preg_match('#

我会用php_replace删除结尾的零,这样我会有一个更好的函数

价值:

$value = 123.12300;
当前功能:

return preg_match('#[.,][0-9]+[0]+$#', $value) ? preg_replace('#[0]+$#', '', $value) : $value;
return preg_replace('#([.,]{0,1}\d+)[0]+$#', '\\1', $value);
另一个功能:

return preg_match('#[.,][0-9]+[0]+$#', $value) ? preg_replace('#[0]+$#', '', $value) : $value;
return preg_replace('#([.,]{0,1}\d+)[0]+$#', '\\1', $value);
提前谢谢你

rtrim()
将完成此任务

$value = 123.12300;
echo rtrim($value,'0');

[0-9]+
\d+
贪婪地匹配。(尽可能匹配)。它可以匹配尾随
0
中的一个。因此,请使用非贪婪版本
\d*?

[,]{0,1}
可以使模式匹配,即使这不是
。只需使用
[,]

$pattern = '#([.,]\d*?)0+$|[.,]$#';

var_dump(preg_replace($pattern, '\1', '123.12300'));
# => 123.123
var_dump(preg_replace($pattern, '\1', '1234000'));
# => 1234000
var_dump(preg_replace($pattern, '\1', '123456780.000000100'));
# => 123456780.0000001
var_dump(preg_replace($pattern, '\1', '123456780.'));
# => 123456780

只需使用
rtrim

return rtrim($value,'0');

echo$value
也会做同样的事情,因为打印时会从浮动中删除尾随的零。correct@explosionpills这也会从
123000
中删除尾随的零。falsetru>然后仅对非整数值使用此函数谢谢。我的错误是“{0,1}\d+”部分。。。嗯,几乎正确:)哦,不。。。试试这个号码:123456780.000000100。没有效果!小错误。。。使用这个:preg#u replace('#[,](\d*?)0+$#','\\1',$value)然后它就完美了,点/逗号也将被替换。(编号:123。)谢谢。
返回rtrim(preg#u replace(“#([,]\d*?)0+$,“\\1',$value),”,”这也将从
123000
中删除尾随零
返回preg_replace(“#[,]”(\d*?)0+$#',“\\1',$value)
返回rtrim(preg#u replace('#([,]\d*)0+$,'\\1',$value),',')