我正在尝试获取任何域名的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;
}
EX:http://data.alexa.com/data?cli=10&dat=snbamz&url=anythinghere123.com
结果:
<ALEXA VER="0.9" URL="anythinghere123.com/" HOME="0" AID="VruOh1YRg600iz" IDN="anythinghere123.com/">
<RLS PREFIX="http://" more="0"></RLS>
<SD TITLE="A" FLAGS="" HOST="anythinghere123.com"></SD>
</ALEXA>
我试图给出带前缀的命名空间,但它始终返回0(所有域)。
如何解决这个问题?我想将alexa排名0列入任何未注册的网站
答案 0 :(得分:0)
这个
if (!$xml) {
return FALSE;
}
替换为
if (!isset($xml->SD[1])) {
return FALSE;
}