1

我有这个字符串:

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

简单的问题:如何将此字符串转换为数组?

问题是,有时会eval吸到explode(",",$string)错误的逗号:

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

1 回答 1

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);
}

这非常可怕,但是从字符串中提取数组是一种快速的技巧。我并不是说这是解决您问题的“好”解决方案,但它是一个快速解决方案,并且适用于您作为示例提供的内容。

随时提出问题或通过各种方式提出更好的解决方案。

于 2013-05-31T00:11:36.867 回答