TwitterのAPI制限のカウントxmlの取得に失敗する場合はこの方法

·

TwitterのAPIは一定時間内での利用回数が制限されている。(例:1時間あたり150リクエストまで)
そのためTwitterではあと何回APIの実行が可能かを取得するためのAPIも用意されており、TwitterのAPI制限状況を取得したい場合、以下のURLにアクセスすることで残りのAPI呼出可能回数およびリセットされる時間が分かる。

http://twitter.com/account/rate_limit_status.xml

$xml = @simplexml_load_file(“http://twitter.com/account/rate_limit_status.xml”);

上記のようにsimplexml_load_fileを使うと、1時間当たりの上限リクエスト数、リセットされる時間や、TwitterのAPI制限に達するまでに利用できるAPIリクエスト数が返ってくる。

SimpleXMLElement Object
(
    [hourly-limit] => 150
    [reset-time-in-seconds] => 1317191935
    [reset-time] => 2011-09-28T06:38:55+00:00
    [remaining-hits] => 148
)

そこで、

$limit = $xml->remaining-hits;
$hourly = $xml->hourly-limit;

のようにして、制限に達するまでに利用できるAPIリクエスト数、1時間当たりの上限リクエスト数を取得しようと考えるが、この方法ではうまくいかない。
理由は簡単。返されてきたxmlの各データ[hourly-limit]、[reset-time-in-seconds]、[reset-time]、[remaining-hits]にハイフン「-」が含まれているのが原因。
xmlのキーにハイフンが含まれていた場合は、以下のように記述すると成功する。

$limit = $limit_status->{‘remaining-hits’};
$hourly = $limit_status->{‘hourly-limit’};

xmlのデータを処理していて、xmlの取得は成功しているのに、データとしてうまく取り出せない場合にも同様のケースがあることがある。