Search code examples
phpcategoriesjsonmediawiki-api

PHP Parsing json decoded result from wikipedia api MediaWiki


I am trying to use the wikipedia mediawiki api to get a page data. The query url is :

http://en.wikipedia.org/w/api.php?action=parse&format=json&page=Nirnayam_%281991_film%29

One of the properties returned is categories:

"categories":[{"sortkey":"","*":"Telugu-language_films"},{"sortkey":"","*":"1991_films"},{"sortkey":"","*":"Indian_films"}]

A var_dump after json_decode :

foreach($wiki_page_data_json->parse->categories as $cat)
{
    var_dump($cat);
}

gives me this :

object(stdClass)[21] public 'sortkey' => string '' (length=0)
public '*' => string 'Telugu-language_films' (length=21)

object(stdClass)[22] public 'sortkey' => string '' (length=0)
public '*' => string '1991_films' (length=10)

object(stdClass)[23] public 'sortkey' => string '' (length=0)
public '*' => string 'Indian_films' (length=12)

I can access public 'sortkey' as $cat->sortkey

Question is - How do I access the value in public '*' ?


Solution

  • You can access object properties with names that contain special characters using this notation:

    foreach($wiki_page_data_json->parse->categories as $cat)
    {
        var_dump( $cat->{'*'} );
    }
    

    Interesting reading > https://stackoverflow.com/a/10333200/67332