Search code examples
phpjsonapimediawikimediawiki-api

How to get wiki pageid?


I am currently using PHP to make a chatbot that can do research on wiki,and send the introduction automaitcally, here is the wiki api json(https://zh.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro&explaintext&redirects=1&titles=search_title)

{"batchcomplete":"","query":{"redirects":[{"from":"search_title","to":"search_title"}],"pages":{"541":{"pageid":541,"ns":0,"title":"search_title","extract":"ablablablablablablablablablablabla。"}}}}

I want to get the extract part by

$data=$jsondata['query']['pages']["541"]['extract'];

but it seems like I need to have to know pageid is '541' first, is there method that I can know padeid in first??


Solution

  • You should look for a way to iterate over array values without knowing the keys. I'm not a PHP developer but I think a foreach will do:

    foreach ($jsondata['query']['pages'] as $pageid => $pagedata) {
        extract = $pagedata['extract']
        ...
    }
    

    There is also a formatversion=2 parameter for the query that, among other things, will make

    action=query's "pages" be an array, instead of an object with page ids as keys that can be difficult to iterate.