Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP~将字符串转换为数组_Php_Regex - Fatal编程技术网

PHP~将字符串转换为数组

PHP~将字符串转换为数组,php,regex,Php,Regex,我有这个字符串: array('type' => 'button', 'value' => 35); 简单问题:如何将此字符串转换为数组 问题是,eval吸音和explode(“,”,$string)有时捕捉到错误的逗号: array('t,y,p,e' => 'bu,t,t,o,n', 'va,,,l,,ue' => '3,,,,,5'); 我怀疑您是否能找到一个函数,将字符串作为eval之外的代码读取。假设你总是有相同的刚性结构,你可以这样做- $str = "a

我有这个字符串:

array('type' => 'button', 'value' => 35);
简单问题:如何将此字符串转换为数组

问题是,
eval
吸音和
explode(“,”,$string)
有时捕捉到错误的逗号:

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

我怀疑您是否能找到一个函数,将字符串作为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);
}
这非常可怕,但是可以快速从字符串中提取数组。我并不是说这是解决您的问题的“好”解决方案,但它是一个快速解决方案,适用于您提供的示例


请随意提问或提出更好的解决方案。

我怀疑您是否能找到一个函数,将字符串作为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);
}
这非常可怕,但是可以快速从字符串中提取数组。我并不是说这是解决您的问题的“好”解决方案,但它是一个快速解决方案,适用于您提供的示例


请随意提问或提出更好的解决方案。

字符串的来源是什么?数组('type'=>'按钮','value'=>35)不是字符串,而是数组。你是指数组中的字符串吗?@eduardo-该字符串包含数组的语法,但它本身不是堆栈溢出成员hakre指定的arrayLook-into。你为什么要将其作为字符串?字符串的来源是什么?数组('type'=>'button','value'=>35)不是字符串,而是数组。你是指数组中的字符串吗?@eduardo-该字符串包含数组的语法,但它本身不是堆栈溢出成员hakre指定的arrayLook-into。你为什么要将其作为字符串?