来自字符串的正则表达式键值

时间:2014-08-15 12:22:11

标签: php regex string decimal

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

我在编写正则表达式时遇到问题,因为该值是十进制数。 字符串的示例如下:

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

知道如何编写正确的正则表达式吗?

正则表达让我头疼!

3 个答案:

答案 0 :(得分:2)

您可以尝试使用以下正则表达式来获取键值对。

([a-z]+),(\d+(?:\.\d+)?)

DEMO

答案 1 :(得分:1)

您可以使用array_chunk()

$values = array_chunk(explode(',', $string), 2)

foreach ($values as $pair) {
    list($key, $value) = $pair;
    // do something
}

答案 2 :(得分:0)

您可以使用以下代码:

$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"
}