Wikipedia API und PHP (CURL)

Wikipedia ist eine freie Online-Enzyklopädie mit einer enorm großen Datenbasis. Man kann sehr viele nützliche Informationen aus Wikipedia bekommen, so beispielsweise über Personen, Künstler, Städte, Autos, Marken,… die Liste ist unendlich lang.

Idee

Will man eine einfache Beschreibung oder Erklärung zu einem Begriff haben, so kann man sich die Wikipedia API zu Nutzen machen. Eine weitere Möglichkeit wäre die Google-Begriffserklärung (auch hierfür gibt es eine API). Ich ziehe aber die Wikipedia API der Google-Begriff API vor, da diese viel mehr und relevanterer Inhalt hat.

Skizze

Wikipedia API CURL

So funktioniert es:

Das PHP Script ist denkbar einfach aufgebaut: Mit CURL wird die Wikipedia API aufgerufen, die als Anwort eine XML Datei liefert. Jetzt muss die XML Datei nur noch geparst werden um die Definition zu bekommen. Je nach Land und Sprache, kann man die Wikipedia URL entsprechend anpassen.

Beispiel

Sourcecode

<?php
/**
 * Wikipedia API (CURL)
 * Wikipedia Definitionen via CURL auslesen
 * 
 * Version 1.0, 20.09.2010
 * Dennis Pietsch, www.fooz.de
 */
function getWikiDef($word
{
    
$url "http://de.wikipedia.org/w/api.php?action=opensearch&search=".urlencode($word)."&format=xml&limit=1";
    
$ch curl_init($url);
    
curl_setopt($chCURLOPT_HTTPGETTRUE);
    
curl_setopt($chCURLOPT_POSTFALSE);
    
curl_setopt($chCURLOPT_HEADERfalse);
    
curl_setopt($chCURLOPT_NOBODYFALSE);
    
curl_setopt($chCURLOPT_VERBOSEFALSE);
    
curl_setopt($chCURLOPT_REFERER"");
    
curl_setopt($chCURLOPT_FOLLOWLOCATIONTRUE);
    
curl_setopt($chCURLOPT_MAXREDIRS4);
    
curl_setopt($chCURLOPT_RETURNTRANSFERTRUE);
    
$useragent $_SERVER["HTTP_USER_AGENT"];
    
curl_setopt($chCURLOPT_USERAGENT$useragent);
    
$page curl_exec($ch);
    
$xml simplexml_load_string($page);
    if((string)
$xml->Section->Item->Description
    {
        return array((string)
utf8_decode($xml->Section->Item->Text),
        (string)
utf8_decode($xml->Section->Item->Description),
        (string)
$xml->Section->Item->Url);
    } 
    else 
    {
        return 
"";
    }
}

$description getWikiDef("Friedrichsdorf");
echo 
"Begriff: ".$description[0]."<br/>";
echo 
"Beschreibung: ".$description[1]."<br/>";
echo 
"Permalink:".$description[2]."<br/>";
?>

Download

Download

Download Wikipedia API (CURL)