在我的项目中,我必须转换一个数组格式的字符串:
$str = "array(array('text', 'Video Code', 0, 'videoCode', '', 'Paste the youtube Video Code'))";
有没有办法将它转换为如下数组:
$array = array(array('text', 'Video Code', 0, 'videoCode', '', 'Paste the youtube Video Code'));
注意:数组可能超过10维。
答案 0 :(得分:3)
// if format of the string is like
$str = "array(array('text', 'Video Code', 0, 'videoCode', '', 'Paste the youtube Video Code'))";
// Make json format from it
$str = str_replace(['array(', ')', "'"], ['[',']', '"'], $str);
// And decode
print_r(json_decode($str, true));
结果
Array
(
[0] => Array
(
[0] => text
[1] => Video Code
[2] => 0
[3] => videoCode
[4] =>
[5] => Paste the youtube Video Code
)
)
答案 1 :(得分:2)
您可以使用eval
,但不建议在公共数据上使用。
$str = "\$arr = array(array('text', 'Video Code', 0, 'videoCode', '', 'Paste the youtube Video Code'));";
eval($str);
print_r($arr);
来自PHP手册:
警告eval()语言结构非常危险,因为它 允许执行任意PHP代码。因此不鼓励使用它。 如果您已经仔细确认除了以外没有其他选择 使用此构造,请特别注意不要传递任何用户 提供数据而未事先正确验证。
答案 2 :(得分:1)
试试这个:
$str = "array(array('text', 'Video Code', 0, 'videoCode', '', 'Paste the youtube Video Code'))";
$str = trim($str,"array(");
$str = trim($str,")");
$arr = explode(",",$str);
$arr_final = array();
$arr_final[] = $arr;
print '<pre>';print_r($arr_final);