我有一个字符串:
$str = "CASH55.35inMyPocket";
Run Code Online (Sandbox Code Playgroud)
我想只得到55.35.
我试过了:
$str = floatval("CASH55.35inMyPocket");
if ($str > 0) {
echo "Greater_Zero";
} else {
echo "LessZERO!!";
}
// echo "LessZERO!!";
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
$str = (float)"CASH55.35inMyPocket";
if ($str > 0) {
echo "Greater_Zero";
} else {
echo "LessZERO!!";
}
// echo "LessZERO!!";
Run Code Online (Sandbox Code Playgroud)
根据文件:
字符串很可能会返回,
0尽管这取决于字符串最左边的字符.
所以,flotval和(float)如果字符串是一样的东西显然只工作:
55.35aAbBcCdDeEfF...但如果是喜欢将不起作用:aAbBcC55.35dDeEfF
有没有办法让浮动无论文本的位置?
Dan*_*jel 24
如果您不想使用正则表达式,请使用filter_var:
$str = "CASH55.35inMyPocket";
var_dump( (float) filter_var( $str, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION ) ); // float(55.35)
Run Code Online (Sandbox Code Playgroud)
你所拥有的不能转换为浮点数,因为从 PHP 的角度来看它看起来不像浮点数。不过,可以使用正则表达式获取该值。
如果你不确定是否总会有小数。无论文本中的位置如何(根据您的问题),您都试图获取数字。你可以使用:
^.*?([\d]+(?:\.[\d]+)?).*?$
Run Code Online (Sandbox Code Playgroud)
它从以下字符串中获取数值:
CASH55.35inMyPocket
CASH55inMyPocket
55.35inMyPocket
55inMyPocket
inMyPocket55.35
inMyPocket55
Run Code Online (Sandbox Code Playgroud)
说明: http: //regex101.com/r/tM8eM0
演示: http: //rubular.com/r/Gw5HTzsejj
PHP 演示: https: //eval.in/165521
基本上它在字符串中查找数字。之后它还可以选择检查小数。