Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to format var_export to php5.4 array syntax

There are lots of questions and answers around the subject of valid php syntax from var outputs, what I am looking for is a quick and clean way of getting the output of var_export to use valid php5.4 array syntax.

Given

$arr = [     'key' => 'value',     'mushroom' => [         'badger' => 1     ] ];   var_export($arr); 

outputs

array (   'key' => 'value',   'mushroom' =>    array (     'badger' => 1,   ), ) 

Is there any quick and easy way to have it output the array as defined, using square bracket syntax?

[     'key' => 'value',     'mushroom' => [         'badger' => 1     ] ] 

Is the general consensus to use regex parsing? If so, has anyone come across a decent regular expression? The value level contents of the arrays I will use will all be scalar and array, no objects or classes.

like image 974
designermonkey Avatar asked Jun 19 '14 21:06

designermonkey


Video Answer


1 Answers

I had something similar laying around.

function var_export54($var, $indent="") {     switch (gettype($var)) {         case "string":             return '"' . addcslashes($var, "\\\$\"\r\n\t\v\f") . '"';         case "array":             $indexed = array_keys($var) === range(0, count($var) - 1);             $r = [];             foreach ($var as $key => $value) {                 $r[] = "$indent    "                      . ($indexed ? "" : var_export54($key) . " => ")                      . var_export54($value, "$indent    ");             }             return "[\n" . implode(",\n", $r) . "\n" . $indent . "]";         case "boolean":             return $var ? "TRUE" : "FALSE";         default:             return var_export($var, TRUE);     } } 

It's not overly pretty, but maybe sufficient for your case.

Any but the specified types are handled by the regular var_export. Thus for single-quoted strings, just comment out the string case.

like image 78
mario Avatar answered Sep 19 '22 11:09

mario