从print_r输出创建变量

Ben*_*ier 12 php

如何从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结构几乎是不可能的 - 它只能通过上面链接的代码中的猜测分裂来完成..(还有两个版本,也许你必须尝试他们通过为您的具体案例找到匹配.)

  • 除非重置不合理的downvote,否则为+1. (2认同)

Arn*_*anc 10

你为什么不用var_export

var_export(array(1, 2, 3)); // array(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)

您可以使用eval()导入 var_export的输出,但我建议您尽可能避免使用此功能.

以下函数更适合导出导入变量:

serialize()并且unserialize():

$string = serialize(array(1, 2, 3));
$array = unserialize($string); // array(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)

json_encode()json_decode():

$string = json_encode(array(1, 2, 3));
$array = json_decode($string);
Run Code Online (Sandbox Code Playgroud)

  • 你的建议都没有回答**实际的**问题.print_r输入是前提条件,而不是选项. (3认同)