2011-12-16 50 views
0

我試圖通過:http://en.wikipedia.org/w/api.php?action=parse&page=Petunia&format=xml對維基百科進行API調用,但是xml已經包含了html和css標籤。從一篇文章中獲取來自維基百科的描述

有沒有辦法只提取純文本沒有標籤?謝謝!

*編輯1:

$json = json_decode(file_get_contents('http://en.wikipedia.org/w/api.php?action=parse&page=Petunia&format=json')); 
$txt = strip_tags($json->text); 
var_dump($json); 

空顯示。

+0

肯定沒有錯誤的回報? (我得到403如果使用命令來抓取內容,它似乎需要一個身份驗證密鑰) – ajreal 2011-12-16 11:57:46

+0

是的,你是對的(我的php.ini被迫不顯示erros);我怎麼能得到這個關鍵? – 2011-12-16 12:28:52

回答

1

問題是部分答案here

$url = 'http://en.wikipedia.org/w/api.php?action=parse&page=Petunia&format=json&prop=text'; 
$ch = curl_init($url); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_USERAGENT, "TestScript"); // required by wikipedia.org server 
$c = curl_exec($ch); 

$json = json_decode($c); 

var_dump(strip_tags($json->{'parse'}->{'text'}->{'*'})) 

我不能使用file_get_contents,但它正常工作與cURL

0

可以使用xml從維基百科獲取信息或描述。

  $url = "http://en.wikipedia.org/w/api.php?action=opensearch&search=".$term."&format=xml&limit=1"; 
     $ch = curl_init($url); 
     curl_setopt($ch, CURLOPT_HTTPGET, TRUE); 
     curl_setopt($ch, CURLOPT_POST, FALSE); 
     curl_setopt($ch, CURLOPT_HEADER, false); // Include head as needed 
     curl_setopt($ch, CURLOPT_NOBODY, FALSE);  // Return body 
     curl_setopt($ch, CURLOPT_VERBOSE, FALSE);   // Minimize logs 
     curl_setopt($ch, CURLOPT_REFERER, "");   // Referer value 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // No certificate 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);  // Follow redirects 
     curl_setopt($ch, CURLOPT_MAXREDIRS, 4);    // Limit redirections to four 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);  // Return in string 
     curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.1; he; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8"); // Webbot name 
     $page = curl_exec($ch); 
     $xml = simplexml_load_string($page); 
     if((string)$xml->Section->Item->Description) { 
      print_r(array((string)$xml->Section->Item->Text, 
      (string)$xml->Section->Item->Description, 
      (string)$xml->Section->Item->Url)); 
     } else { 
      echo "sorry"; 
     }

但捲曲必須安裝在服務器上...有一個愉快的一天...