2012-11-09 49 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

确定它现在有效 –