Php simplexml\u加载\u文件返回alexa rank的空对象

Php simplexml\u加载\u文件返回alexa rank的空对象,php,Php,我试图获得任何领域的alexa排名,我发现一个功能,它可以工作,但如果一个网站没有在alexa注册,它将返回空对象,然后我的网站将停止加载 Alexa函数: <?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 = "h

我试图获得任何领域的alexa排名,我发现一个功能,它可以工作,但如果一个网站没有在alexa注册,它将返回空对象,然后我的网站将停止加载

Alexa函数:

<?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=s&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 = (int) $nodeAttributes['TEXT'];

    return $text;
}
这个

换成这个

if (!isset($xml->SD[1])) {
        return FALSE;
    }

它对所有域返回0:(为什么对所有域都返回?我尝试了
echo alexa\u get\u rank('http://google.com')
它返回
2
但不是0如果我使用你的代码,它返回空对象。我刚才试了很多次。好的,如果没有“www”的域将返回空对象。可以帮我一下吗?例如,我写
echo alexa_get_rank('http://google.com')
此输出
2
。您可以看到,我使用URL而不使用
www
if (!$xml) {
        return FALSE;
    }
if (!isset($xml->SD[1])) {
        return FALSE;
    }