有很多问题和答案围绕着从var输出的有效php语法的主题,我正在寻找的是一个快速和干净的方法,让var_export
的输出使用有效的php5.4数组语法。
给定
$arr = [
'key' => 'value',
'mushroom' => [
'badger' => 1
]
];
var_export($arr);
产出
array (
'key' => 'value',
'mushroom' =>
array (
'badger' => 1,
),
)
有没有什么简单快捷的方法可以让它使用方括号语法输出定义的数组?
[
'key' => 'value',
'mushroom' => [
'badger' => 1
]
]
使用正则表达式解析是普遍的共识吗?如果是这样,有没有人遇到过像样的正则表达式?我将使用的数组的值级别内容都是scalar
和array
,没有对象或类。
5条答案
按热度按时间m1m5dgzv1#
我周围也有类似的东西。
不是很漂亮,但对你来说足够了。
除指定类型外的任何类型都由常规的
var_export
处理,因此对于单引号字符串,只需注解掉string
的大小写。wwwo4jvm2#
对于任何寻找更现代的解决方案的人,请使用Symfony var-exporter,它也可以作为composer上的独立库提供,但默认情况下包含在Symfony中。
yk9xbfzb3#
我知道这个问题由来已久但是搜索把我带到了这里,我不关心完整的迭代或使用
json_decode
,所以这里有一个基于preg_replace
的var_export
twister来完成这项工作。我已经在几个数组和对象上测试过了。从任何Angular 来看都不是详尽的,但是它看起来工作得很好。我通过压缩额外的换行符和空数组使输出“紧凑”。如果你在使用它的时候遇到了任何意外的数据损坏,请告诉我。我还没有对上面的解决方案进行基准测试,但是我怀疑它会快得多。享受阅读你的数组吧!
rxztt3cl4#
使用https://github.com/zendframework/zend-code时:
pkwftd7m5#
正如评论所指出的,这只是一个附加语法,如果键或值中没有
)
,那么var_export
就可以很好地将var_export
恢复为括号样式,尽管使用JSON作为中间层,但仍然很简单:我用HTML实体来表示
(
和)
,你可以使用转义序列或者别的什么。