2013-05-30 94 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); 
} 

这是非常可怕的,但它是一个快速黑客提取从字符串数组。我并不是说这对你的问题是一个“好的”解决方案,但它是一个快速解决方案,可以用作你提供的例子。

随意提问或通过各种方式建议更好的解决方案。