Convierte cadena a matriz asociativa PHP

Tengo una cadena:

string(133) "'status' => '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'" 

¿Cómo creo una matriz asociativa? El resultado debe ser esto:

 array('status' => '-1', 'level1' => '1', ....); 

Por favor ayuda.

Pruebe esto (con nombres de variables de trabajo incorrectos, pero está funcionando) –

  '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'"; $mstr = explode(",",$str); $a = array(); foreach($mstr as $nstr ) { $narr = explode("=>",$nstr); $narr[0] = str_replace("\x98","",$narr[0]); $ytr[1] = $narr[1]; $a[$narr[0]] = $ytr[1]; } print_r($a); 

Codepad Link – http://codepad.org/EqysY1CZ

El más rápido y simple, pero REALMENTE INSEGURA

 $str = "array('3'=>'www.tension.com','1'=>'www.seomeuo.com','requestedBy'=>'1')"; eval("\$array = $str;"); 

Nunca deberías usar este enfoque, hay otras maneras de hacerlo, como serialize() y unserialize()

prueba este código y usa explode () y foreach loop para obtener tu salida

  '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'"; $a=explode("=>",$string); $c=array(); $i=0; foreach($a as $k=>$v){ if($i%2==0){ $b[]=$v; }else{ $c[]=$v; } $i++; } $d=array_combine($b,$c); print_r($d); ?> 

Yo quería practicar Regex. Un gran problema es que su cadena tiene ',' y ', ' como delimitadores, por lo que debe corregirlo.

  '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'"; $var = str_replace(', ', ',', $var); $rows = explode(',', $var); $array = []; foreach($rows AS $row){ preg_match("/^'(.+)' \=\> '(.+)'\$/", $row, $matches); $array[$matches[1]] = $matches[2]; } var_dump($array); ?> 

Ejemplo: http://ideone.com/4oad4t

La lógica sucia está aquí 🙂

  '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'"; echo $str='$arr='.'array('.$str.');'; eval($str); echo "
"; print_r($arr); ?>

Necesita usar la función de explosión en PHP.
consulte-> http://cz1.php.net/explode