トップ 差分 一覧 ツリー ソース 検索 インデックス検索 ヘルプ RSS RSS10 RSS20 ATOM ログイン

SourceCodePHP はてなブックマーク livedoorクリップ

ForMobile
6/18 FeedLoad HSPでRSS/RDF/Atomを簡単に取り扱ったり、PodCastに対応したり

ここは

とにかく自分が役に立つ、あるいは面白いかも、とか思ったっぽいPHPのコードを適当に書き綴ってゆきます。
他にHSPに関係することであれば別のことも書くかもしれませんが…

…って、HSPのサンプルコードのページと同じこと書いてますね。

ここにあるコードも転載・再利用自由です。
基本的には、PHP5で動作するスクリプトです。ただし5.0.0では動作しない場合もあります(忘れてなければ注記してます)。

なお、PHP用の色分けプラグインを導入していない(存在するかの確認すらしてない)ので、ソースが見づらいかもしれません。

ネットワークリソース

インターネット経由でデータをやり取りする場合の例とか

XML

XMLを処理するときの例とか
PHP5なので、simpleXMLがメインってかそれしかない。

名前空間の存在するXMLをパースする

名前空間の展開にはchildren()が使用できる。
ここでは、Livedoor Weather Hacksの「全国の地点定義表」から、全国の
主要都市名とそのIDを取得する。
参考:http://weather.livedoor.com/weather_hacks/webservice.html
参考:http://oshiete1.goo.ne.jp/qa3494329.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$rss=simplexml_load_file("http://weather.livedoor.com/forecast/rss/forecastmap.xml");
$ldWeather=$rss->channel->children('ldWeather',TRUE);        //prefixを指定して名前空間に入る(5.2.0以降)
/*
//PHP5.2.0より前の場合は、prefixを直接指定できないので以下のようにする
$ns = $rss->getNamespaces(true);
$ldWeather=$rss->channel->children($ns['ldWeather']);

//若しくは、直接名前空間URIを指定する
//本来はこの方法がベストだと思う
$ldWeather=$rss->channel->children('http://weather.livedoor.com/ns/rss/2.0');
*/

$n=0;
foreach($ldWeather->source->children()->area as $area){        //children()がポイント
        foreach($area->pref as $pref){
                foreach($pref->city as $city){
                        echo "".$pref['title']."->".$city['title']."=".$city['id']."<br>";
                        $n++;
                        break;        //先頭の1都市(都道府県庁所在地かそれに順ずる都市)のみ取得したらループを出る
                }
        }
}
echo "合計 $n 都市";

prefixを指定せず名前空間URIを直接指定したほうがいい気がするが、むしろprefixより名前空間URIが
一意かつ普遍に存在するか心配なのでこのままで。

最終更新時間:2008年02月12日 19時34分36秒


TSUKABAN!への連絡の際には、こちらもお読みください。→TsProfile