PHP - split String in Key/Value pairs

2019-01-06 19:37发布

I have a string like this:

key=value, key2=value2

and I would like to parse it into something like this:

array(
  "key" => "value",
  "key2" => "value2"
)

I could do something like

$parts = explode(",", $string)
$parts = array_map("trim", $parts);
foreach($parts as $currentPart)
{
    list($key, $value) = explode("=", $currentPart);
    $keyValues[$key] = $value;
}

But this seems ridiciulous. There must be some way to do this smarter with PHP right?

4条回答
Juvenile、少年°
2楼-- · 2019-01-06 20:15

if you change your string to use & instead of , as the delimiter, you can use parse_str()

查看更多
可以哭但决不认输i
3楼-- · 2019-01-06 20:18

If you can change the format of the string to conform to a URL query string (using & instead of ,, among other things, you can use parse_str. Be sure to use the two parameter option.

查看更多
够拽才男人
4楼-- · 2019-01-06 20:22
<?php parse_str(str_replace(", ", "&", "key=value, key2=value2"), $array); ?>
查看更多
Animai°情兽
5楼-- · 2019-01-06 20:29

If you don't mind using regex ...

$str = "key=value, key2=value2";
preg_match_all("/([^,= ]+)=([^,= ]+)/", $str, $r); 
$result = array_combine($r[1], $r[2]);
var_dump($result);
查看更多
登录 后发表回答