PHP去除数字字符串中的小数

4

我有一个算法可以返回带小数点的数字(例如“0.57”)。我想要做的是只获取“57”而不含小数点。

我已经使用了eregi_replace和str_replace,但都没有起作用!

$one = ".57";
$two = eregi_replace(".", "", $one);
print $two;

1
抱歉,我们需要更精确的输入和输出规格说明... - Paul
1
可能是重复的问题:如何在PHP中删除第一个字符 - Gordon
小数点总是在开头吗? - Jonah
6个回答

8
$one = '.57';
$two = str_replace('.', '', $one);
echo $two;

可以这样做。已经测试了100%。顺便提一下,所有的ereg(i)_*函数都已经过时了。如果需要使用正则表达式,请改用preg_*。


5
Method       Result   Command
x100         57       ((float)$one * 100))
pow/strlen   57       ((float)$one * pow(10,(strlen($one)-1))))
substr       57       substr($one,1))
trim         57       ltrim($one,'.'))
str_replace  57       str_replace('.','',$one))

只是展示一些获得相同结果的其他方法。

聪明,但如果他得到了.572,它就不起作用了。结果将是57。 - Jonah
@Jonah:已修复。同时展示了其他几个替代方案。 - Brad Christie

2
$number = ltrim($number, '.');

这将删除所有尾随的点。


1
好的,但我们不知道它是否总是在(左)边缘。@Matthew 是吗? - Jonah

1

你说你已经尝试过使用str_replace,但是下面的代码完美地运行起来:

<?php
    $one = '.57';
    $two = str_replace('.', '', $one);
    echo $two;
?>

1
我尝试使用 eregi_replacestr_replace,但都没有起作用!

嗯,eregi_replace() 不会起作用,因为它使用正则表达式,而 .(点)字符具有特殊含义:代表任何字符(所以您已经将每个字符替换为了空字符串 "")。

但在这种情况下,str_replace() 完全可以正常工作。

这里是一个实时测试: http://ideone.com/xKG7s


0

这将返回一个整数。

$two = (integer) trim('.', $one);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接