eval字符串作为数组

时间:2015-03-06 14:43:19

标签: php arrays eval

我有一个.html文件,其中包含以下内容:

array('1', '786286', '45626');

这就是它所包含的全部内容。

在我的代码中,我想评估它,然后将其打印出来:

$code = file_get_contents('array.html');
$nums = eval($code);
print_r($nums);

但是,它没有打印任何东西。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

首先,请勿使用eval()。它是一个 EVIL 功能,应该像瘟疫一样避免使用。

其次,它不起作用,因为你没有编写正确的PHP代码。你的eval正在做的是字面上相当于一个.php文件包含:

<?php
array(1,2,3)

没有任务,没有输出,也没有return。只是一个数组被“执行”然后立即被销毁。

你应该拥有的是

<?php
$arr = array(1,2,3)

所以数组得到保留。这意味着您的评估应该更像:

$text = file_get_contents('...');
// option 1
eval("\$arr = $text");
      ^^^^^^^
print_r($arr);

// option 2
$foo = eval("return $text");
             ^^^^^^
print_r($foo);