如果我访问以下网址:https://api.site.com/logged/me,我会收到以下输出。
"status": "success",
"id": "https://api.site.com/logged/me",
"denormalized": {
"https://api.site.com/logged/me": {
"data": {
"user": {
"id": "https://api.site.com/me/897348924"
}
如何使用PHP回显ID字段?
答案 0 :(得分:0)
所以我猜你的output
“数据”实际上是有效的json而不是像你的例子中那样破碎。所以它应该是这样的,或者你需要调整它来得到这样的东西:
$json = '{
"status": "success",
"id": "https://api.site.com/logged/me",
"denormalized": {
"https://api.site.com/logged/me": {
"data": {
"user": {
"id": "https://api.site.com/me/897348924"
}
}
}
}
}';
然后你不需要正则表达式,但根据你想要获得url
(第二个是键)的元素你可以这样做:
$jsonObj = json_decode($json, true);
var_dump($jsonObj['id']);
var_dump(array_keys($jsonObj['denormalized'])[0]);
哦,如果你需要得到最内在的id
,这是一个可能的解决方案:
var_dump($jsonObj['denormalized'][$jsonObj['id']]['data']['user']['id']);
查看结果或在此处使用PHP Fiddle
答案 1 :(得分:0)
正则表达式: (?:"user"\s?:\s?{\r?\n\s+"id"\s?:\s?"(?<id>[^"]+)"\r?\n\s+})
<强>详细信息:强>
(?:)
非捕获组
\s?
匹配任何空格字符
\r?
匹配回车符,\n
匹配换行符(换行符)
(?<id>[^"]+)
命名的捕获组ID“字面匹配”