PHP удаляет десятичную дробь из числовой строки


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

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

$one = ".57";
$two = eregi_replace(".", "", $one);
print $two;
Author: DonJuma, 2011-01-19

6 answers

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

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

 7
Author: Jonah, 2011-01-19 18:43:53
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))

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

 3
Author: Brad Christie, 2011-01-19 19:21:21
$number = ltrim($number, '.');

, который удаляет все конечные точки.

 2
Author: NikiC, 2011-01-19 18:29:29

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

<?php
    $one = '.57';
    $two = str_replace('.', '', $one);
    echo $two;
?>
 1
Author: John Parker, 2011-01-19 18:30:57

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

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

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

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

 1
Author: Crozin, 2011-01-19 18:35:02

Это будет возвращено в виде целого числа.

$two = (integer) trim('.', $one);
 0
Author: Matt Lowden, 2011-01-19 18:48:15