SourceCodePHP
ここは
とにかく自分が役に立つ、あるいは面白いかも、とか思ったっぽい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 |
$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