<?php
$kv_list = <<<EOT
1 => Testumgebung, 2 => Liveumgebung, 3 => "auch mit , und =>", 4, 5
EOT;
function parse_key_value_list($kv_list)
{
$stack = array();
$reg_exp = '#([^,"\'=>]+ | => | "[^"]*" | \'[^\']*\')#x';
$success = preg_match_all($reg_exp, $kv_list, $match);
$t = count($match[1]);
$n = 0;
// ggf. Anführungen entfernen und trimmen
foreach ($match[1] as $m){
$m = preg_replace('#("|\')(.*)(\1)#', '\\2',$m);
$hits[] = trim($m);
}
for ($c = 0; $c < $t; $c++){
if ($hits[$c+1] == '=>') {
$key2use = $hits[$c];
$val2use = $hits[$c+2];
$stack[$key2use] = $val2use;
$c+=2;
// bei numerischem Key weiterzählen
if (is_numeric($key2use)){
$n++;
}
}else{
$stack[$n] = $hits[$c];
$n++;
}
}
return $stack;
}
print '<pre>';
print_r( parse_key_value_list($kv_list));
print '</pre>';
?>