2013-05-30 129 views
1

我有這個字符串:PHP〜字符串轉換爲數組

array('type' => 'button', 'value' => 35); 

簡單的問題:我怎麼能這個字符串轉換成數組?

的問題是,eval吮吸和explode(",",$string)漁獲有時錯誤的逗號:

array('t,y,p,e' => 'bu,t,t,o,n', 'va,,,l,,ue' => '3,,,,,5'); 
+1

字符串的來源是什麼? – 2013-05-30 23:48:48

+0

數組('type'=>'button','value'=> 35)不是一個字符串,它是一個數組。你是指數組中的字符串嗎? –

+0

@EduardoMoratto我認爲他的意思是這個字符串的值。 – christopher

回答

1

我懷疑你會發現一個函數讀取一個字符串作爲代碼的eval之外。因此,假如你總是有相同的剛性結構,你可以做這樣的事情 -

$str = "array('type' => 'button', 'value' => 35)"; 
preg_match_all('/\(.*?\)/', $str, $arr); 

if(isset($arr[0])) 
{ 
    $array = array(); 
    $items = explode(",", substr($arr[0][0], 1, -1)); 
    foreach($items AS $i) 
    { 
    $kv = explode(" => ", $i); 
    $array[str_replace("'", "", trim($kv[0]))] = str_replace("'", "", trim($kv[1])); 
    } 

    print_r($array); 
} 

這是非常可怕的,但它是一個快速黑客提取從字符串數組。我並不是說這對你的問題是一個「好的」解決方案,但它是一個快速解決方案,可以用作你提供的例子。

隨意提問或通過各種方式建議更好的解決方案。