Search code examples
phpstringkey-valueassociative-arraytext-parsing

Convert a comma-separated string of key=value expressions into an associative array


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?


Solution

  • 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);