2011-02-07 75 views
16

我有一個這樣的字符串:PHP - 以鍵/值對分割字符串

鍵=值,鍵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來做到這一點嗎?

如果你改變你的字符串使用 &代替 ,作爲分隔符
+0

你的數據來自哪裏?你控制它的存儲方式嗎?它應該是一種人類可讀(可寫)格式? – 2011-02-07 16:54:35

回答

18

如果你不介意使用正則表達式...

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

然而你擊敗了我 – JPelletier 2011-02-07 16:59:31

11

,您可以使用parse_str()

+2

`parse_str`也是URL解碼。 – aaz 2011-02-08 20:29:06

2

如果你可以改變(&而不是,,其中可以使用parse_str。請確保使用兩個參數選項。

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