eval的替代品(' $ array_test = array('。$ test。');')

时间:2013-11-19 13:41:58

标签: php arrays type-conversion eval

我正在寻找

的替代品
$test = "1=>'msg_test1',3=>'msg_test2',9=>'msg_test3'";
eval('$array_test = array('.$test.');');

有没有人知道如何让它以一种安全的方式从字符串中获得数组?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您可以使用explode()手动解析它,如下所示:

$test = "1=>'msg_test1,3=>'msg_test2,9=>'msg_test3'";

$array_test = array();
foreach(explode(',', substr($test, 0, -1)) as $row)
{
    $split = explode('=>\'', $row);
    $array_test[$split[0]] = $split[1];
}

var_dump($array_test);

产地:

array (size=3)
  1 => string 'msg_test1' (length=9)
  3 => string 'msg_test2' (length=9)
  9 => string 'msg_test3' (length=9)

答案 1 :(得分:0)

如果我理解你的问题,那么你应该像这样格式化你的字符串

$test = "value1,value2,value2";

然后继续并爆炸

$array_test = explode(',', $test);

你的数组

$array_test = array(
    '1' => 'value1'
    '2' => 'value2'
    '3' => 'value3'
);