【发布时间】:2016-02-16 18:43:39
【问题描述】:
我正在尝试在 PHP 中解析具有以下结构的字符串:
a,b,c(d,e,f(g),h,i(j,k)),l,m,n(o),p
例如,“真实”字符串将是:
id,topic,member(name,email,group(id,name)),message(id,title,body)
我的最终结果应该是一个数组:
[
id => null,
topic => null
member => [
name => null,
email => null,
group => [
id => null,
name => null
]
],
message => [
id => null,
title => null,
body => null
]
]
我尝试了递归正则表达式,但完全迷路了。 我在迭代字符串字符方面取得了一些成功,但这似乎有点“过于复杂”,我确信这是正则表达式可以处理的东西,我只是不知道如何处理。
目的是解析一个REST API的字段查询参数,让客户端从复杂的对象集合中选择他想要的字段,我不想限制字段选择的“深度”。
【问题讨论】:
-
您不需要正则表达式。您可以编写一个简单的解析器来完成这项工作。
-
好的,那我需要什么?手动迭代字符串?
-
有一个几乎相同的问题,如果回答者没有尽快发布解决方案,我会尝试找到该代码。
-
抱歉,很难找到答案。我可以推荐看看this answer,它展示了如何在 PHP 中实现示例解析器。
-
谢谢。手动解析字符串并不“漂亮”,但我已经设法手动解决它,对于任何实际深度(将其测试到 20 级深度,这对于我需要的目的来说是过度杀戮)。我稍后会上传代码,因为它目前都很乱。仍然希望有人提出一个“干净”的解决方案。