在php中只获取字符串中的整数:无法正确获取浮点值

时间:2016-03-31 06:47:11

标签: php string

我试图从字符串中获取只有整数,因为我在php中使用filter_var

这是我的代码

$str="Your base price is 456";
echo filter_var($str,FILTER_SANITIZE_NUMBER_INT); 

但是如果字符串包含浮点值filter_var,则返回没有浮点值的整数。

Eg; 
$str="Your base price is 45.57";
echo filter_var(currencyConvert($currency,$results[0]->base_price),FILTER_SANITIZE_NUMBER_INT); 

这会将整数作为4557回显,但我需要与字符串相同的值。

即它应该是45.57,但我会将其作为4557

有没有办法让它成为正确的浮动值?

5 个答案:

答案 0 :(得分:2)

尝试使用FILTER_SANITIZE_NUMBER_FLOAT,但必须使用正确的标记,即FILTER_FLAG_ALLOW_FRACTION

$str="Your base price is 45.57";
echo filter_var($str,FILTER_SANITIZE_NUMBER_INT);
print_r("\n");
echo filter_var($str,FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
print_r("\n");

打印

4557
45.57

答案 1 :(得分:1)

试试这个:

$str = "Your base price is 456";
echo preg_replace("/[^0-9\.]/", '', $str);  // Prints 456
echo "<br/>";
$str = "Your base price is 45.57";
echo preg_replace("/[^0-9\.]/", '', $str);  // Prints 45.57

希望这有帮助。

答案 2 :(得分:0)

在这行代码中:

echo filter_var($str,FILTER_SANITIZE_NUMBER_INT); 您已使用FILTER_SANITIZE_NUMBER_INT从字符串中获取整数。要从字符串中获取浮点数,您可以使用FILTER_VALIDATE_FLOAT。有关详细信息,请在此处查看:http://www.w3schools.com/php/filter_validate_float.asp

答案 3 :(得分:0)

使用以下代码可以帮助您。

$str="Your base price is 45.6";
preg_match_all('!\d+(?:\.\d+)?!', $str, $matches);
$floats = array_map('floatval', $matches[0]);
print_r($floats);

echo filter_var($str,FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);

答案 4 :(得分:0)

试试这个:

$str = "Your base price is 45.57";
$float_val=(float) filter_var( $str, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) ;
echo $float_val;