0

I have got a API response as below. I this this to deode the response. and got below response. $data = json_decode($response);

{#240 ▼
  +"batchcomplete": ""
  +"query": {#243 ▼
    +"pages": {#234 ▼
      +"171166": {#245 ▼
        +"pageid": 171166
        +"ns": 0
        +"title": "Nepal"
        +"extract": """
          Nepal (/nəˈpɔːl/; Nepali: नेपाल  Nepāl [neˈpal]), officially the Federal Democratic Republic of Nepal (Nepali: सङ्घीय लोकतान्त्रिक गणतन्त्र नेपाल Sanghiya Loktā ▶
          The territory of Nepal has a recorded history since the Neolithic age. The name "Nepal" is first recorded in texts from the Vedic Age, the era which founded Hin ▶
          Modern Nepal is a federal secular parliamentary republic. It has seven states. Nepal is a developing nation, ranking 144th on the Human Development Index (HDI)  ▶
          Nepal's foreign relations expanded after the Anglo-Nepal Treaty of 1923, which was recognized by the League of Nations. After a Soviet veto in 1949, Nepal was a ▶
          """
      }
    }
  }
}

I want to extract title and content. How may I do that?

Edit: I have tried $data = json_decode($response, true); and get below result by doing this var_dump($data['query']['pages']). Results:

array:1 [▼
  171166 => array:4 [▼
    "pageid" => 171166
    "ns" => 0
    "title" => "Nepal"
    "extract" => """
      Nepal (/nəˈpɔːl/; Nepali: नेपाल  Nepāl [neˈpal]), officially the Federal Democratic Republic of Nepal (Nepali: सङ्घीय लोकतान्त्रिक गणतन्त्र नेपाल Sanghiya Loktā ▶
      The territory of Nepal has a recorded history since the Neolithic age. The name "Nepal" is first recorded in texts from the Vedic Age, the era which founded Hin ▶
      Modern Nepal is a federal secular parliamentary republic. It has seven states. Nepal is a developing nation, ranking 144th on the Human Development Index (HDI)  ▶
      Nepal's foreign relations expanded after the Anglo-Nepal Treaty of 1923, which was recognized by the League of Nations. After a Soviet veto in 1949, Nepal was a ▶
      """
  ]
]
VijayRana
  • 953
  • 1
  • 13
  • 38

2 Answers2

0

Just use pages as array:

$response = json_decode(file_get_contents('https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow'));

$pages = (array) $response ->query->pages;
foreach ($pages as $id => $page) {
  echo $page->title;
}
RafH
  • 4,504
  • 2
  • 23
  • 23
0

Use formatversion=2 to get the data in an easier to handle format.

$response = json_decode(file_get_contents('https://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&formatversion=2&exintro=&titles=Stack%20Overflow'), true);
echo($response['query']['pages'][0]['title']);
Tgr
  • 27,442
  • 12
  • 81
  • 118