2011-11-24 29 views
1

我有一個字符串,看起來像:正則表達式格式的字符串分割成關聯數組

KEY1,"Value"KEY2,"Value"Key3,"Value" 

此字符串將總是在鍵/值的數目而變化,我需要關聯數組:

array (
    'KEY1' => 'Value', 
    'KEY2' => 'Value', 
    'KEY3' => 'Value' 
); 

字符串中包含的數據,正則表達式應該是我認爲最好的?

回答

2

假設你的價值不包含在他們"你可以這樣做:

$str = 'KEY1,"Value1"KEY2,"Value2"Key3,"Value3"'; 
$pieces = preg_split('/(?<=[^,]")/',$str,-1,PREG_SPLIT_NO_EMPTY); 
$result = array(); 

foreach($pieces as $piece) { 
     list($k,$v) = explode(",",trim$piece); 
     $result[$k] = trim($v,'"'); 
} 

See it in action!

+0

這工作完美后,我剝離餘下的報價...謝謝 –

+0

@MikeL .:修正了這一點。感謝您指點。 – codaddict

0

如果鍵之間的值發生變化,那麼您將需要preg_split()。如果密鑰始終相同,那麼explode()應該足夠了。

+0

爆炸將無法正常工作,我需要一個正則表達式找到之前會發生什麼作爲價值的關鍵和內在的東西。正則表達式我只是不好。 –

1
php> $str = 'KEY1,"Value"KEY2,"Value"Key3,"Value"'; 

php> $hash = array(); 

php> preg_match_all("/(.*?),\"(.*?)\"/", $str, $m); 

php> foreach($m[1] as $index => $key) { 
... $hash[$key] = $m[2][$index]; 
... } 

php> var_dump($hash); 
array(3) { 
    ["KEY1"]=> 
    string(5) "Value" 
    ["KEY2"]=> 
    string(5) "Value" 
    ["Key3"]=> 
    string(5) "Value" 
} 
相關問題