如何从print_r输出创建变量?换句话说,我想知道var_import在php中是否存在类似于我的虚构函数的东西?var_import将是相反的var_export
他是一个用例:
$a = var_import('Array ( [0] => foo [1] => bar )');
$output = var_export($a);
echo $output; // Array ( [0] => foo [1] => bar )
Run Code Online (Sandbox Code Playgroud)
如果不存在这样的功能,是否有工具(或在线工具)来执行此操作?我也有兴趣对var_dump输出做同样的事情.
编辑:该变量仅作为print_r输出(字符串).为了澄清我需要的东西,想象下面的情况:有人在某个地方用print_r输出在互联网上发布一些样本.要测试他的代码,需要将importprint_r变量放入代码中.这是一个var_import有用的例子.
mar*_*rio 18
有趣的PHP手册包含一个尝试从print_r输出重新创建原始结构的示例:http://www.php.net/manual/en/function.print-r.php#93529
print_r_reverse()
但它确实依赖于保留的空白.因此,您需要实际的HTML内容,而不是渲染的文本来管道它.
此外,除了数组之外,它看起来不会理解任何东西,并且不会下降.因为没有真正的结束标记字符串,它可以同时包含新行,这将是非常困难的),甚至[0]和=>可能被误认为是print_r的分隔符.使用递归正则表达式(和实际的解析器)正确地重新解析print_r结构几乎是不可能的 - 它只能通过上面链接的代码中的猜测分裂来完成..(还有两个版本,也许你必须尝试他们通过为您的具体案例找到匹配.)
Arn*_*anc 10
你为什么不用var_export?
var_export(array(1, 2, 3)); // array(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
您可以使用eval()导入 var_export的输出,但我建议您尽可能避免使用此功能.
以下函数更适合导出和导入变量:
$string = serialize(array(1, 2, 3));
$array = unserialize($string); // array(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
$string = json_encode(array(1, 2, 3));
$array = json_decode($string);
Run Code Online (Sandbox Code Playgroud)