【发布时间】:2016-10-20 16:53:56
【问题描述】:
希望有人能帮忙。
我有一个字符串如下
$string = 'latitude=46.6781471,longitude=13.9709534,options=[units=auto,lang=de,exclude=[hourly,minutely]]';
现在我正在尝试从每个键、值对创建一个数组,但是对于 preg_match_all() 的正则表达式严重失败
目前我的尝试没有给出想要的结果,只要没有括号,创建键 => 值对就可以工作,但是如果键在括号内包含键/值对,我绝对不知道如何实现多维数组例子。
Array (
[0] => Array
(
[0] => latitude=46.6781471,
[1] => longitude=13.9709534,
[2] => options=[units=si,
[3] => lang=de,
)
[1] => Array
(
[0] => latitude
[1] => longitude
[2] => options=[units
[3] => lang
)
.. and so on
我到底想在哪里实现如下结果。
Array (
[latitude] => 46.6781471
[longitude] => 13.9709534
[options] => Array
(
[units] => auto
[exclude] => hourly,minutely
)
)
如果我能从给定的字符串中获得任何帮助或示例,我将不胜感激。
【问题讨论】:
-
只是好奇,但您为什么要创建并尝试解析一种全新的序列化格式?为什么不直接使用 JSON 或已经拥有完整库的类似标准来解析和获取正确的值。使用正则表达式进行这项工作的唯一方法是使其成为可以匹配方括号的递归正则表达式,这并不容易。在遇到特殊字符(逗号、等号或方括号)并使用它之前,您几乎可以更好地遍历每个字符。