在PHP中将字符串解析为数组

Use*_*upt 3 php arrays

我是PHP新手,无法找到合适的答案.

$whatever = "array('Test','Blah')";
echo $parsed[2]; //This will be "Blah"
Run Code Online (Sandbox Code Playgroud)

我想创建一个名为$parsed包含$whatever值但是作为有效数组而不是字符串的变量.

我知道我可以通过删除它周围的引号来创建数组,如下所示:

$whatever = array('Test','Blah');
Run Code Online (Sandbox Code Playgroud)

但是,在我正在研究的实际代码中,这不可能.另外,在我的实际代码中,数组是多维的,所以涉及字符替换的东西可能是不切实际的,但是如果它是最好的选择,我不会把它排除在外.

总结一下,在PHP中将字符串解析为数组的最佳方法是什么?

Sir*_*ius 8

使用该eval功能:http://php.net/manual/en/function.eval.php.

$whatever = "array('Test','Blah')";
$parsed = eval("return " . $whatever . ";");
echo $parsed[1]; //This will be "Blah"
Run Code Online (Sandbox Code Playgroud)

小心检查$whatever变量内容,因为可以执行任何PHP代码.

  • `eval()`是邪恶的.它性能很差,不安全. (6认同)

小智 5

更安全的方式(没有eval)是:

$whatever = "array('Test','Blah')";

$search = array("array", "(", ")", "'");
$parsed = explode(',',str_replace($search, '', $whatever));

echo $parsed[1];
Run Code Online (Sandbox Code Playgroud)

这将删除所有不必要的文本,然后它将使用逗号分隔符爆炸该字符串.

  • 但是,这不会处理递归数组. (2认同)