删除var_export()php的格式

时间:2013-10-15 16:24:36

标签: php file formatting

我使用以下命令将数据数组打印到保存为.php的文件中,以便稍后使用include来获取数组。

$toFile = '$Data = '. var_export($DataArray,true).'; ';
file_put_contents( $filename.'.php', "<?php ".$toFile." ?>");

它被打印到格式化的文件中以便于阅读,但由于空格和换行等原因,它最终占用了更多的磁盘空间。是否有一种简单的方法来删除格式,以便占用更少的空间。我想过使用str_replace,它可以用于新行而不是空格,因为数据可能有空格。

<?php $Data = array (
  'Info' => 
  array (
    'value1' => 'text here',
    'value2' => 'text here',
    'value3' => '$2,500 to $9,999',
  ), ....

这样的事情

<?php $Data = array('Info'=>array('value1'=>'text here','value2'=>'text here','value3'=>'$2,500 to $9,999'),...

由于

编辑:是否有preg_replace模式我可以用来删除不需要的空格只在引号之外?

2 个答案:

答案 0 :(得分:3)

对不起,但如果问题仍然存在:我遇到了同样的问题&#34;,我不认为JSON是我的答案,因为PHP-Array只是解析比JSON对象更有效率。

所以我刚刚编写了一个返回缩小的PHP输出的小函数,并且在我过于简单的测试用例中它节省了大约50%的空间 - 大型数组的趋势应该是一个明显更高的百分比

<?php
function min_var_export($input) {
    if(is_array($input)) {
        $buffer = [];
        foreach($input as $key => $value)
            $buffer[] = var_export($key, true)."=>".min_var_export($value);
        return "[".implode(",",$buffer)."]";
    } else
        return var_export($input, true);
}



$testdata=["test","value","sub"=>["another","array" => ["meep"]]];
$d1 = var_export($testdata, true);
$d2 = min_var_export($testdata);
echo "$d2\n===\n$d1\n\n";
printf("length old: %d\nlength new: %d\npercent saved: %5.2f\n", strlen($d1),strlen($d2), (1-(strlen($d2)/strlen($d1)))*100);

答案 1 :(得分:1)

json_encode()数据可能是更好的方法。这会将它压缩得非常小,甚至还有一个函数json_decode()将它转换回数组。

或者,print_r()有第二个参数,允许您将其输出作为字符串返回。从那里你可以自己压缩它。

使用var_dump()你可以使用输出缓冲来完成它。使用ob_start()启动输出缓冲区,然后正常使用var_dump()。使用ob_get_clean()获取var_dump()的输出,然后您可以从中删除所有不必要的字符。