我试图从字符串中获取只有整数,因为我在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
有没有办法让它成为正确的浮动值?
答案 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;