PHP удалить десятичную из числовой строки - PullRequest
3 голосов
/ 19 января 2011

У меня есть алгоритм, который возвращает число с десятичной точкой (IE ".57").То, что я хотел бы сделать, это просто получить «57» без десятичной дроби.

Я использовал eregi_replace и str_replace и ни одна не работала!

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

Ответы [ 6 ]

7 голосов
/ 19 января 2011
$one = '.57';
$two = str_replace('.', '', $one);
echo $two;

Это работает. 100% проверено. Кстати, все функции ereg (i) _ * устарели. Вместо этого используйте preg_ *, если вам нужно регулярное выражение.

3 голосов
/ 19 января 2011
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))

Просто демонстрируем некоторые другие методы получения того же результата

2 голосов
/ 19 января 2011
$number = ltrim($number, '.');

Удаляет все конечные точки.

1 голос
/ 19 января 2011

Я использовал eregi_replace и str_replace, и ни один не работал!

Ну ... ereg_replace() не будет работать, потому что он использует регулярные выражения, а символ . (точка) имеет специальное значение: все (так что вы ' мы заменили каждый символ на "" (пустая строка)).

Но str_replace() в этом случае работает абсолютно нормально.

Вот живой тест: http://ideone.com/xKG7s

1 голос
/ 19 января 2011

Вы говорите, что пытались использовать str_replace безуспешно, но следующий код отлично работает:

<?php
    $one = '.57';
    $two = str_replace('.', '', $one);
    echo $two;
?>
0 голосов
/ 19 января 2011

Возвращается как целое число.

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