PHP Regexp:从小数点后的值末尾删除前导零
我正在尝试编写一个正则表达式,这样,如果一个数字有小数点,那么结尾的零(0)必须被删除 例如:PHP Regexp:从小数点后的值末尾删除前导零,php,regex,Php,Regex,我正在尝试编写一个正则表达式,这样,如果一个数字有小数点,那么结尾的零(0)必须被删除 例如: $value = 234.8076000 $value = 2340 在Regexp Replace之后,它应该变为 234.8076 我正在preg_replace中尝试以下regexp[0]+$,但问题是,如果该值没有小数点并且在末尾包含零,那么该零也会被删除 例如: $value = 234.8076000 $value = 2340 变为234,但应保持为2340 有什么想法吗?ph
$value = 234.8076000
$value = 2340
在Regexp Replace之后,它应该变为
234.8076
我正在preg_replace中尝试以下regexp[0]+$,但问题是,如果该值没有小数点并且在末尾包含零,那么该零也会被删除
例如:
$value = 234.8076000
$value = 2340
变为234,但应保持为2340
有什么想法吗?php中是否有内置函数可以执行此操作?您可以在不使用regexpes的情况下执行此操作:
php > echo ((float)"21.40200")."\n";
21.402
/(\.\d*?)0+$/
,除/\d+\.0{n}/
情况外,其他情况均有效无需regexpes即可:
php > echo ((float)"21.40200")."\n";
21.402
/(\.\d*?)0+$/
,除/\d+\.0{n}/
情况外,其他情况均有效无需regexpes即可:
php > echo ((float)"21.40200")."\n";
21.402
/(\.\d*?)0+$/
,除/\d+\.0{n}/
情况外,其他情况均有效无需regexpes即可:
php > echo ((float)"21.40200")."\n";
21.402
/(\.\d*?)0+$/
,除了/\d+\.0{n}/
案例之外,其他情况都可以使用是的,您确实可以使用正则表达式:
$pattern = '/(\.\d*[^0])0+$/';
echo preg_replace($pattern, '$1', '2340'); // 2340
echo preg_replace($pattern, '$1', '2340.0'); // 2340.0
echo preg_replace($pattern, '$1', '2340.07600'); // 2340.076
。。。但最简单的方法是将字符串
值转换为浮点值
echo (float)'2340'; // 2340
echo (float)'2340.0'; // 2340
echo (float)'2340.07600'; // 2340.076
回显实际上是整数值的浮点显然会删除小数部分,但从您的评论来看,它实际上是您想要的。是的,您确实可以使用正则表达式执行此操作:
$pattern = '/(\.\d*[^0])0+$/';
echo preg_replace($pattern, '$1', '2340'); // 2340
echo preg_replace($pattern, '$1', '2340.0'); // 2340.0
echo preg_replace($pattern, '$1', '2340.07600'); // 2340.076
。。。但最简单的方法是将字符串
值转换为浮点值
echo (float)'2340'; // 2340
echo (float)'2340.0'; // 2340
echo (float)'2340.07600'; // 2340.076
回显实际上是整数值的浮点显然会删除小数部分,但从您的评论来看,它实际上是您想要的。是的,您确实可以使用正则表达式执行此操作:
$pattern = '/(\.\d*[^0])0+$/';
echo preg_replace($pattern, '$1', '2340'); // 2340
echo preg_replace($pattern, '$1', '2340.0'); // 2340.0
echo preg_replace($pattern, '$1', '2340.07600'); // 2340.076
。。。但最简单的方法是将字符串
值转换为浮点值
echo (float)'2340'; // 2340
echo (float)'2340.0'; // 2340
echo (float)'2340.07600'; // 2340.076
回显实际上是整数值的浮点显然会删除小数部分,但从您的评论来看,它实际上是您想要的。是的,您确实可以使用正则表达式执行此操作:
$pattern = '/(\.\d*[^0])0+$/';
echo preg_replace($pattern, '$1', '2340'); // 2340
echo preg_replace($pattern, '$1', '2340.0'); // 2340.0
echo preg_replace($pattern, '$1', '2340.07600'); // 2340.076
。。。但最简单的方法是将字符串
值转换为浮点值
echo (float)'2340'; // 2340
echo (float)'2340.0'; // 2340
echo (float)'2340.07600'; // 2340.076
回显实际上是整数值的浮点数显然会删除小数部分,但从您的评论来看,它实际上是您想要的。@vp arth它没有检测到该值:2340.0340必须将其转换为2340.034。数字234.807600没有任何尾随零;然而,String确实如此。因此,我真的想知道在float
中使用((float)$value
)进行转换有什么错。@raina77ow-您应该将此作为一个答案来写。这确实是最简单的方法。@vp arth它没有检测到此值:2340.0340必须将其转换为2340.034数字234.807600没有任何尾随零;然而,String确实如此。因此,我真的想知道在float
中使用((float)$value
)进行转换有什么错。@raina77ow-您应该将此作为一个答案来写。这确实是最简单的方法。@vp arth它没有检测到此值:2340.0340必须将其转换为2340.034数字234.807600没有任何尾随零;然而,String确实如此。因此,我真的想知道在float
中使用((float)$value
)进行转换有什么错。@raina77ow-您应该将此作为一个答案来写。这确实是最简单的方法。@vp arth它没有检测到此值:2340.0340必须将其转换为2340.034数字234.807600没有任何尾随零;然而,String确实如此。因此,我真的想知道在float
中使用((float)$value
)进行转换有什么错。@raina77ow-您应该将此作为一个答案来写。这确实是最简单的方法。请尝试使用preg\u replace
与21.00200
.php>echo preg\u replace(“/(\.\d*?)0+$/”、“$1”和“21.00200”)。“\n”;21.002echo preg\u replace('/(\.\d*?)0+$/'、'$1'、'2340.0');//2340.
在我的系统上是21,而不是21.002。不知道为什么:)@raina77ow这些表达式工作正常,但在您的示例中,如果值为23.0,它将保留小数点。是否可以使用regexpTry yourpreg\u replace
对21.00200
.php>echo preg\u replace(“/(\.\d*?)0+$/”,“$1”,“21.00200”)进行更正。“\n”;21.002echo preg\u replace('/(\.\d*?)0+$/'、'$1'、'2340.0');//2340.
在我的系统上是21,而不是21.002。不知道为什么:)@raina77ow这些表达式工作正常,但在您的示例中,如果值为23.0,它将保留小数点。是否可以使用regexpTry yourpreg\u replace
对21.00200
.php>echo preg\u replace(“/(\.\d*?)0+$/”,“$1”,“21.00200”)进行更正。“\n”;21.002echo preg\u replace('/(\.\d*?)0+$/'、'$1'、'2340.0');//2340.
在我的系统上是21,而不是21.002。不知道为什么:)@raina77ow这些表达式工作正常,但在您的示例中,如果值为23.0,它将保留小数点。是否可以使用regexpTry yourpreg\u replace
对21.00200
.php>echo preg\u replace(“/(\.\d*?)0+$/”,“$1”,“21.00200”)进行更正。“\n”;21.002echo preg\u replace('/(\.\d*?)0+$/'、'$1'、'2340.0');//2340.
在我的系统上是21,而不是21.002。不知道为什么:)@raina77ow这些表达式工作正常,但在您的expample中,如果值为23.0,它将保留小数点。是否也可以使用regexp进行更正