2012-11-09 66 views
0

我想獲得alexa排名的任何鏈接。我發現一個簡單的類,這是沒有得到alexa排名的網站

Class Alexa { 

    function getAlexaRank($url) 
    { 
     $request_url = "http://data.alexa.com/data?cli=10&dat=snbamz&url=".$url; 
     $xml = simplexml_load_file($request_url) or die("feed not loading"); 
     return $xml->SD->POPULARITY['TEXT']; 
    } 

} 

,當我去到這個鏈接

http://data.alexa.com/data?cli=10&dat=snbamz&url=google.com

我得到

<SD> 
<POPULARITY URL="google.com/" TEXT="2" SOURCE="panel"/> 
<REACH RANK="1"/> 
<RANK DELTA="+1"/> 
<COUNTRY CODE="US" NAME="United States" RANK="1"/> 
</SD> 

但爲什麼這個類不起作用?它不返回任何東西

謝謝:)

+3

這是因爲類是壞了。聯繫班級的作者並做一個錯誤報告,我們不能在這裏處理第三方代碼,而只能處理你自己的代碼。 – hakre

+1

有兩個SD節點,所以你可以試試這個'$ xml-> SD [1] - > POPULARITY ['TEXT'];' – GBD

+0

它只在我的本地主機上工作。但在我的主機沒有。你認爲這個問題是什麼?我應該聯繫我的主機嗎? –

回答

4
<?php 
/** 
* Get Popularity Text of a Domain via Alexa XML Data 
* 
* @return string|FALSE text or FALSE on error 
*/ 
function alexa_get_rank($domain) 
{ 
    $alexa = "http://data.alexa.com/data?cli=10&dat=snbamz&url=%s"; 
    $request_url = sprintf($alexa, urlencode($domain)); 

    $xml = simplexml_load_file($request_url); 
    if (!$xml) { 
     return FALSE; 
    } 

    $nodeAttributes = $xml->SD[1]->POPULARITY->attributes(); 
    $text = (string) $nodeAttributes['TEXT']; 

    return $text; 
} 

var_dump(alexa_get_rank('google.com')); 
// string(1) "2" 
+0

它只在我的本地主機上工作。但在我的主機不。你認爲這個問題是什麼?我應該聯繫我的主機嗎? –

+0

確定它現在有效 –