2013-06-25 2 views
1

Я пытаюсь получить ранг alexa для любого домена, я нашел одну функцию, которая работает, но если сайт, не зарегистрированный на alexa, он вернет пустой объект, а затем мой сайт перестанет загружаться.simplexml_load_file возвращает пустой объект для alexa rank

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, на все время (все домены).

как решить эту проблему? Я хотел бы поставить тИЦ 0 для любого веб-сайта, ни зарегистрированного

ответ

0

Это

if (!$xml) { 
     return FALSE; 
    } 

Заменить этот

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

она возвращает 0 для всех доменов :( –

+0

Почему для всех доменов? Я try 'echo alexa_get_rank ('http://google.com');' он возвращает '2', но не 0 – Winston

+0

, если я использую ваш код, он возвращает пустой объект. Я пробовал это много раз только сейчас. –