PHP-在键/值对中拆分字符串

PHP-在键/值对中拆分字符串,php,string,split,key-value,Php,String,Split,Key Value,我有这样一个字符串: array( "key" => "value", "key2" => "value2" ) 键=值,键2=值2 我想把它分解成这样的东西: array( "key" => "value", "key2" => "value2" ) 我可以做类似的事情 $parts = explode(",", $string) $parts = array_map("trim", $parts); foreach($parts as $curre

我有这样一个字符串:

array(
  "key" => "value",
  "key2" => "value2"
)
键=值,键2=值2

我想把它分解成这样的东西:

array(
  "key" => "value",
  "key2" => "value2"
)
我可以做类似的事情

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

但这似乎很可笑。使用PHP一定有更智能的方法,对吗?

如果您将字符串改为使用
&
而不是
作为分隔符,如果您不介意使用正则表达式,您可以使用

$str = "key=value, key2=value2";
preg_match_all("/([^,= ]+)=([^,= ]+)/", $str, $r); 
$result = array_combine($r[1], $r[2]);
var_dump($result);

如果您可以更改字符串的格式以符合URL查询字符串(使用
&
而不是
,除其他外,您可以使用
parse_str
。请确保使用双参数选项。


<?php parse_str(str_replace(", ", "&", "key=value, key2=value2"), $array); ?>

这里有一个使用
array\u reduce
格式为多行的单一命令解决方案,以提高可读性:


您的数据来自何处?您是否控制其存储方式?它是否应该是人类可读(和可写)的格式?但是…在OP示例中使用explode和loop-like可能比使用正则表达式解析更有效。在对其进行基准测试之前,您永远不会知道这一点。这在很大程度上取决于使用模式。我只是不得不使用它。你做到了!我有$selectedSoftware=array(“AntiVirus($20)”,“Norton($100)”;$n=内爆(“,”,$selectedSoftware);$bool=preg\u match\u all(“/([^,]+)(\$(\d+)/”,$n,$matches);它返回0。我不知道为什么,我在这里测试了它