在PHP中使用Perl的Data :: Dumper格式数组

时间:2016-02-29 01:04:07

标签: php arrays perl type-conversion perl-data-structures

我需要访问一个由Perl的Data :: Dumper输出的数组 数组是一个原始文件,我需要用php访问它 数组格式如下:

$stats = {
  'days' => 25,
  'lengths' => {
    'Piwee' => 269,
    'Jeanne-' => 904,
    'kaAnar' => 340,
[... Very Big ARRAY....]

我在这里找到了this solution,但我不想使用eval(),因为这个数组将具有用户输入数据。 因为在str_replace解决方案的情况下我总是需要eval()输出,我想我需要找到另一种方法来做到这一点。
也许转换为XML或直接PHP解析?
我不确定这里最好的解决方案是什么。

perl / PHP / bash解决方案没问题

注1:我无法编辑输出此原始文件的Perl代码 注意2:我没有在Perl中编码所以我不知道如何使用这样的数据

1 个答案:

答案 0 :(得分:6)

请勿使用Data::Dumper导出您的数据。它主要用于调试目的,不用于数据序列化,尤其不用于输入外来语言

使用Perl JSON模块的encode_json调用从Perl哈希创建一个JSON字符串,并使用PHP json_decode将其转换为PHP关联数组

例如,假设Data::Dumper的输出位于文件stats.data中,那么像这样的简短Perl程序将打印等效于STDOUT的JSON

use strict;
use warnings 'all';

use JSON;

print encode_json( do 'stats.data' or die $! ), "\n";

输出

{"lengths":{"Jeanne-":904,"Piwee":269,"kaAnar":340},"days":25}