1

任意のドメインで Alexa ランクを取得しようとしています。動作する関数が 1 つ見つかりましたが、Web サイトが 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;
}

例: 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にしたい

4

1 に答える 1

0

これ

if (!$xml) {
        return FALSE;
    }

これに置き換えます

if (!isset($xml->SD[1])) {
        return FALSE;
    }
于 2013-06-25T19:04:14.400 に答える