我有这个字符串:
array('type' => 'button', 'value' => 35);
简单问题:如何将此字符串转换为数组?
问题是,eval
糟透了,explode(",",$string)
有时会抓错了:
array('t,y,p,e' => 'bu,t,t,o,n', 'va,,,l,,ue' => '3,,,,,5');
答案 0 :(得分: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);
}
这是非常可怕的,但是从字符串中提取数组是一个快速的黑客攻击。我不是说这是对你的问题的“好”解决方案,但它是一个快速解决方案,并且可以作为你提供的例子。
随意提出问题或以任何方式提出更好的解决方案。