2016-03-08 165 views
0

我想編寫一個連接到維基百科URL並獲取維基百科文章內容的php函數。我使用cURL與PHP。我指的是這個blog與維基百科頁面捲曲php

問題是:該函數沒有看到url的內容並返回錯誤。

這是我的代碼:

<?php 
$wikipediaURL = 'http://fr.wikipedia.org/wiki/Megadeth'; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $wikipediaURL); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Le blog de Samy Dindane (www.dinduks.com)'); 
$resultat = curl_exec ($ch); 
curl_close($ch); 
$wikipediaPage = new DOMDocument(); 
$wikipediaPage->loadHTML($resultat); 
foreach($wikipediaPage->getElementsByTagName('div') as $div){ 
if($div->getAttribute('id') == "bodyContent"){ 
    $description = '<p>' . $div->getElementsByTagName('p')->item(0)->nodeValue. '</p>'; 
    $description = preg_replace('/\[[0-9]*\][,]|\[[0-9]*\]/', '', $description); 
    echo $description; }} 
?> 

這是錯誤消息:

警告:DOM文檔:: loadHTML():作爲輸入 c供給空字符串:\瓦帕\ WWW \ Project1 \ wiki5.php 12行

我使用其他代碼示例具有相同的功能,它不能只與維基百科url一起使用。

請任何幫助! 感謝

+0

你不檢查,如果捲曲電話竟是成功。檢查[我的答案的另一個問題](http://stackoverflow.com/questions/8227909/curl-exec-always-returns-false/13311209#13311209)找出如何診斷呼叫。 –

+1

你沒有使用'wikipedia' api。我認爲他們阻止空白請求。 https://www.mediawiki.org/wiki/API:Main_page – chris85

+0

不會file_get_contents的作品? $ wikipediaURL ='http://fr.wikipedia.org/wiki/Megadeth'; $ tmp = file_get_contents($ wikipediaURL); echo $ tmp; – SamyQc

回答

0

只需添加CURLOPT_FOLLOWLOCATION選項,您的代碼將作品:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $wikipediaURL); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, True); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);          # <---- 
curl_setopt($ch, CURLOPT_USERAGENT, 'Le blog de Samy Dindane (www.dinduks.com)'); 
$resultat = curl_exec ($ch); 
curl_close($ch); 
+0

我添加CURLOPT_FOLLOWLOCATION,它給了我相同的結果空字符串作爲輸入提供。 – Adem

+0

你可以在別處使用cURL嗎?我已經測試過它,它適用於我 – fusion3k

+0

的記錄:試着用'echo file_get_contents($ wikipediaURL);' – fusion3k