如何在PHP中使用正则表达式搜索任意顺序的子字符串

如何在PHP中使用正则表达式搜索任意顺序的子字符串,php,regex,json,Php,Regex,Json,我目前正在使用一个以以下格式输出JSON数据的web服务: {"ID":1291,"Name":"Houses of the Holy","Artist":"Led Zeppelin","Year":1973} 但是,从一个项目到下一个项目的顺序并不一致。例如: {"ID":2958,"Label":"Reprise Records","Name":"Electric Ladyland","Year":1968} 当然,我不能编写一个依赖于属性的统一顺序的正则表达式,因为从一个项到下一个项的

我目前正在使用一个以以下格式输出JSON数据的web服务:

{"ID":1291,"Name":"Houses of the Holy","Artist":"Led Zeppelin","Year":1973}
但是,从一个项目到下一个项目的顺序并不一致。例如:

{"ID":2958,"Label":"Reprise Records","Name":"Electric Ladyland","Year":1968}
当然,我不能编写一个依赖于属性的统一顺序的正则表达式,因为从一个项到下一个项的顺序不同(尽管它们总是以ID开头)

我会使用preg_split,使用“,”作为分隔符,但偶尔会出现轨迹列表,如下所示:

{"ID":9237,"Tracklist":[{"Track1":"Taxman","Track2":"Eleanor Rigby"}]}
…这会把事情搞砸的


我如何使用正则表达式来搜索可能以任何顺序出现或根本不出现的子字符串?或者我必须在web服务返回的每个项目上运行多个正则表达式,每个可能的属性一个正则表达式?

使用json_decode()访问每个项目应该很容易

输出: 排列 ( [ID]=>2958 [标签]=>重新播放记录 [名称]=>电动乐园 [年份]=>1968年
)我想知道你为什么不想使用json_decode()

输出将是

Array
(
[ID] => 1291
[Name] => Houses of the Holy
[Artist] => Led Zeppelin
[Year] => 1973
)

然后,您可以按照您想要的方式操作数组

这听起来像是您需要一个解析器。您不能使用内置的JSON解析器吗?您无法使用?我不认为正则表达式可以满足您的需要。在您的情况下,使用语法解析器可能会有所帮助。+1对于我最喜欢的专辑《holylolz之家》……看起来我们可以读懂彼此的想法。一个建议使用TRUE with json decode,另一个明智的返回将是simpleobject,而不是ArrayTanks来获取答案。很高兴看到它比我想象的简单得多!
$json_string = '{"ID":1291,"Name":"Houses of the Holy","Artist":"Led Zeppelin","Year":1973}';
 $json_array =json_decode($json_string,true);
Array
(
[ID] => 1291
[Name] => Houses of the Holy
[Artist] => Led Zeppelin
[Year] => 1973
)