Php eval的替代方案(';$array_test=array(';$test.';)';)
我正在寻找一个替代方案Php eval的替代方案(';$array_test=array(';$test.';)';),php,arrays,type-conversion,eval,Php,Arrays,Type Conversion,Eval,我正在寻找一个替代方案 $test = "1=>'msg_test1',3=>'msg_test2',9=>'msg_test3'"; eval('$array_test = array('.$test.');'); 有人知道我如何从字符串中安全地获得数组吗 提前感谢您的帮助 如果我理解你的问题,那么你应该像这样格式化你的字符串 $test=“value1,value2,value2” 然后继续进行爆炸 $array_test=explode(',',$test) 你的阵列
$test = "1=>'msg_test1',3=>'msg_test2',9=>'msg_test3'";
eval('$array_test = array('.$test.');');
有人知道我如何从字符串中安全地获得数组吗
提前感谢您的帮助 如果我理解你的问题,那么你应该像这样格式化你的字符串
$test=“value1,value2,value2”代码>
然后继续进行爆炸
$array_test=explode(',',$test)代码>
你的阵列
$array_test = array(
'1' => 'value1'
'2' => 'value2'
'3' => 'value3'
);
您可以使用如下方法手动解析它:
产生:
array (size=3)
1 => string 'msg_test1' (length=9)
3 => string 'msg_test2' (length=9)
9 => string 'msg_test3' (length=9)
不使用JSON(或XML,或SEN或任何其他已知格式)等数据交换格式的任何原因?如果eval是您的最佳选择,您可能做得不对请注意eval
=evil
:)这可能是XY问题,请告诉我们您想要实现什么。如果$test中缺少引号,则表示它无效
array (size=3)
1 => string 'msg_test1' (length=9)
3 => string 'msg_test2' (length=9)
9 => string 'msg_test3' (length=9)