我从这里得到了值
$uptime = explode(',', `uptime`);
$uptime[3]
是load average: 2.26
但是,intval($uptime[3]);
会返回0
我认为这可能是因为小数位,所以我也试过了。
$uptime_days = strpos($uptime[0], ' ');
$uptime_days_value = substr($uptime[0], $uptime_days + 9);
echo intval($uptime_days_value);
$uptime_days_value
返回up 60 days
,因此intval()
应该返回60
,而是返回0
答案 0 :(得分:2)
如果$ uptime [3]为load average: 2.26
,那么你将获得0返回,因为load average
不是琥珀(整数或实数)
$uptime[3] = 'load average: 2.26';
echo intval(explode(': ', $uptime[3])[1]);
如果$uptime_days_value
为up 60 days
,则intval()将返回0,因为up
不是数字
$uptime_days_value = 'up 60 days';
echo intval(explode(' ', $uptime_days_value)[1]);
答案 1 :(得分:2)
使用正则表达式
<?php
$string = "load average: 2.26";
$expression = "/[0-9]+\\.*[0-9]*";
$matches = array();
if(preg_match($expression, $string, $matches) != 0) {
print_r($matches);
}
?>
如果有多种类型,则应打印:#或#。#,任意位数:
Array
(
[0] => "2.26"
)
请注意,$ matches通过引用传递,因此$ matches的现有值将在函数调用中被替换。
然后,获取整数或浮点值:
$number = intval($matches[0]);