我有PHP字符串,需要在变量中获取值,如上所述

时间:2015-12-03 11:43:06

标签: php string get integer

我有以下格式的PHP字符串,
$msg=Temp:29.6 C RH:57 % WD:29 Deg WS: 0.6 Kts SLP:1005.4 hPa Rain:0.0 mm

我的问题是如何在变量中获取值?

3 个答案:

答案 0 :(得分:0)

如果您的字符串存在于变量$ temp

e.g。 $ temp ='$ msg =温度:29.6℃RH:57%WD:29度WS:0.6 Kts SLP:1005.4 hPa降雨:0.0 mm';

然后 $ msg = str_replace('$ msg =','',$ temp);

将在$ msg变量中为您提供所需的输出值。

答案 1 :(得分:0)

通过从值和单位中删除空格来创建新字符串。它应该如下所示。

$msg=Temp:29.6C RH:57% WD:29Deg WS:0.6Kts SLP:1005.4hPa Rain:0.0mm

使用explode()函数

分解字符串
       $msgarray = explode(" ", $msg);
  it will return $msgarray[0]=Temp:29.6C and so on...

for($i=0;$1<count(&msgarray);i++
{
 $temp = explode(":", $msgarray[i]);
 $key = $temp[0];
 $value = $temp[1];
 $output[key] = $value;
}
echo '<pre>';
print_r($output);

$ output数组将包含与该键关联的键和值。它将是一个关联数组。$ output数组将如下所示

$output['Temp'] = 29.6C
$output['RH'] = 57%
$output['WD'] = 29Deg
$output['WS'] =0.6Kts
$output['SPL'] =1005.4hPa
$output['Rain'] = 0.0mm

答案 2 :(得分:0)

您可以使用preg_match_all

$msg = 'Temp:29.6 C  RH:57 %  WD:29 Deg  WS: 0.6 Kts  SLP:1005.4 hPa  Rain:0.0  mm';

preg_match_all('/([a-z]+):([0-9]+\.?[0-9]+?[\s]{1,2}[a-z%]+)/i', $msg, $matches);

$values = array_combine($matches[1], $matches[2]);

echo '<pre>';
var_dump($values);
echo '</pre>';

结果将是一个结构:

array(5) {
  ["Temp"]=>
  string(6) "29.6 C"
  ["RH"]=>
  string(4) "57 %"
  ["WD"]=>
  string(6) "29 Deg"
  ["SLP"]=>
  string(10) "1005.4 hPa"
  ["Rain"]=>
  string(7) "0.0  mm"
}