4

我有一个算法可以返回一个带小数点的数字(即“.57”)。我想做的只是得到没有小数的“57”。

我用过 eregi_replace 和 str_replace 都没有工作!

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

6 回答 6

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

这样可行。100% 测试。顺便说一句,所有 ereg(i)_* 函数都已折旧。如果您需要正则表达式,请改用 preg_*。

于 2011-01-19T18:29:37.353 回答
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))

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

于 2011-01-19T18:32:00.553 回答
2
$number = ltrim($number, '.');

这将删除所有尾随点。

于 2011-01-19T18:29:29.040 回答
1

我用过 eregi_replace 和 str_replace 都没有工作!

嗯......ereg_replace()不会起作用,因为它使用的是正则表达式,并且.(点)字符具有特殊含义:所有内容(因此您已将每个字符替换为“”(空字符串))。

str_replace()在这种情况下工作得很好。

这是一个现场测试:http: //ideone.com/xKG7s

于 2011-01-19T18:35:02.903 回答
1

您说您尝试使用 str_replace 没有任何运气,但以下代码完美运行:

<?php
    $one = '.57';
    $two = str_replace('.', '', $one);
    echo $two;
?>
于 2011-01-19T18:30:57.933 回答
0

这将作为整数返回。

$two = (integer) trim('.', $one);
于 2011-01-19T18:31:34.750 回答