从字符串正则表达式键值


Regex key values from string

我有一个键值对字符串,用逗号作为分隔符。我需要遍历字符串,获取键和值,并将它们推入数组。

我有一个问题,写一个正则表达式的值是一个十进制数字。该字符串的示例如下:

 value,0.23,word,0.42,dog,0.28000000000000014,cat,0,car,17.369999999999997

任何想法如何写一个正确的正则表达式?

正则表达式让我头疼!

您可以尝试下面的正则表达式来获取键、值对。

([a-z]+),('d+(?:'.'d+)?)
演示

您可以使用array_chunk():

$values = array_chunk(explode(',', $string), 2)
foreach ($values as $pair) {
    list($key, $value) = $pair;
    // do something
}

您可以使用以下代码:

$str = 'value,0.23,word,0.42,dog,0.28000000000000014,cat,0,car,17.369999999999997';
$parts = explode(',', $str);
$result = array();
for($i=0; $i < count($parts); $i+=2) {
    $result[$parts[$i]] = $parts[$i+1];
}
var_dump($result);
输出:

array(5) {
  ["value"]=>
  string(4) "0.23"
  ["word"]=>
  string(4) "0.42"
  ["dog"]=>
  string(19) "0.28000000000000014"
  ["cat"]=>
  string(1) "0"
  ["car"]=>
  string(18) "17.369999999999997"
}