サンプル・プログラムの実行例
目次
サンプル・プログラム
| weeklyCalendar.php | サンプル・プログラム本体 |
| .pahooEnv | クラウドサービスを利用するためのアカウント情報などを記入する .env ファイル。 使い方は「各種クラウド連携サービス(WebAPI)の登録方法」を参照。include_path が通ったディレクトリに配置すること。 |
| pahooInputData.php | データ入力に関わる関数群。 使い方は「数値入力とバリデーション」「文字入力とバリデーション」などを参照。include_path が通ったディレクトリに配置すること。 |
| pahooGeoCode.php | 住所・緯度・経度に関わるクラス pahooGeoCode。 使い方は「PHPで住所・ランドマークから最寄り駅を求める」などを参照。include_path が通ったディレクトリに配置すること。 |
| pahooWeather.php | 気象情報に関わるクラス pahooWeather。 気象情報に関わるクラスの使い方は「PHPで天気予報を求める」を参照。include_path が通ったディレクトリに配置すること。 |
| pahooCalendar.php | 暦計算クラス pahooCalendar。 暦計算クラスの使い方は「PHPで日出没・月出没・月齢・潮を計算」を参照。include_path が通ったディレクトリに配置すること。 |
| pahooCache.php | キャッシュ処理に関わるクラス pahooCache。 キャッシュ処理に関わるクラスの使い方は「PHPで天気予報を求める」を参照。include_path が通ったディレクトリに配置すること。 |
| jmaweatherspots.xml | 予報地点情報ファイル。「PHPで天気予報を求める」参照。 |
| jmaWeatherInit.php | 予報地点情報ファイル作成プログラム。「PHPで天気予報を求める」参照。 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 3.3.1 | 2026/01/01 | addWeeklyCalendar -- 旧暦テーブル作成の不具合修正 |
| 3.3.0 | 2025/10/11 | 「中秋の名月」を表示するようにした |
| 3.2.0 | 2023/08/12 | 検索キーの最小・最大長の指定 |
| 3.1.0 | 2023/08/12 | 国土地理院ジオコーディングAPIを追加 |
| 3.0.0 | 2022/05/28 | 太陽・月に関わる計算精度向上 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 6.9.1 | 2025/11/25 | PHP8.5対応:double→float |
| 6.9.0 | 2025/09/21 | jsPolygon, jsPolygon_Gmap, jsPolygon_Leaflet, loadGeoJSON, getPrefBorderList を追加 |
| 6.8.0 | 2025/08/10 | アクセスキーなどを ".pahooEnd" に分離 |
| 6.7.1 | 2025/07/26 | jsLine_Gmap() - bug-fix |
| 6.7.0 | 2025/07/20 | drawJSmap,drawGMap -- 引数 $markerLevel 追加 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 5.7.0 | 2025/08/09 | readEnvWBGTinfoSpots(), readEnvWBGTforecast(), getWBGTcolor() 追加 |
| 5.6.2 | 2025/04/10 | readJmaSpots() -- bug-fix |
| 5.6.1 | 2025/04/08 | getMyscriptPathURL() -- bug-fix |
| 5.6.0 | 2025/02/23 | getJmaNearSpot() -- 引数 $distanceMax 追加 |
| 5.5.0 | 2025/02/01 | 予報地点情報ファイルを1週間毎に再作成する |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 4.6.1 | 2025/11/23 | next_fullmoon: bug-fix |
| 4.6.0 | 2025/10/08 | getMidAutumnMoon() 追加 |
| 4.5.1 | 2025/05/31 | deg2ddmm(), deg2hhmm() 不具合修正 |
| 4.5.0 | 2024/03/17 | ヒジュラ暦メソッドを追加 |
| 4.4.1 | 2024/03/17 | getCabinetOfficeHolidayTable() -- bug-fix |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 1.3.0 | 2025/12/06 | PHP8.5対応:curl_closeを使わない |
| 1.2.0 | 2025/09/06 | cLoad() HTTPヘッダを送信できるようにした |
| 1.1.3 | 2025/08/10 | var→public |
| 1.1.2 | 2023/07/22 | bug-fix |
| 1.1.1 | 2023/02/11 | コメント追記 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 2.0.1 | 2025/08/11 | getParam() bug-fix |
| 2.0.0 | 2025/08/11 | pahooLoadEnv() 追加 |
| 1.9.0 | 2025/07/26 | getParam() 引数に$trim追加 |
| 1.8.1 | 2025/03/15 | validRegexPattern() debug |
| 1.8.0 | 2024/11/12 | validRegexPattern() 追加 |
準備:PHP の https対応
Windowsでは、"php.ini" の下記の行を有効化する。
extension=php_openssl.dllLinuxでは --with-openssl=/usr オプションを付けて再ビルドする。→OpenSSLインストール手順
これで準備は完了だ。
準備:pahooInputData 関数群
また、各種クラウドサービスに登録したときに取得するアカウント情報、アプリケーションパスワードなどを登録した .pahooEnv ファイルから読み込む関数 pahooLoadEnv を備えている。こちらについては、「各種クラウド連携サービス(WebAPI)の登録方法」をご覧いただきたい。
準備:pahooGeoCode クラス
pahooGeoCode.php
41: class pahooGeoCode {
42: public $items; // 検索結果格納用
43: public $error; // エラー・フラグ
44: public $errmsg; // エラー・メッセージ
45: public $hits; // 検索ヒット件数
46: public $webapi; // 直前に呼び出したWebAPI URL
47:
48: // 都道府県境界線データ
49: // SimpleMaps.com is a product of Pareto Software, LLC. © 2010-2025
50: // https://simplemaps.com/gis/country/jp
51: // ※各自の環境に合わせて設定すること
52: public $GeoJsonJP = __DIR__ . '/jp.json';
53:
54: // -- 以下のデータは .env ファイルに記述可能
55: // Google Cloud Platform APIキー
56: // https://cloud.google.com/maps-platform/
57: // ※Google Maps APIを利用しないのなら登録不要
58: public $GOOGLE_API_KEY_1 = ''; // HTTPリファラ用
59: public $GOOGLE_API_KEY_2 = ''; // IP制限用
60: public $GOOGLE_MAP_ID = ''; // GoogleMaps ID
61:
62: // Yahoo! JAPAN Webサービス アプリケーションID
63: // https://e.developer.yahoo.co.jp/register
64: // ※Yahoo! JAPAN Webサービスを利用しないのなら登録不要
65: public $YAHOO_APPLICATION_ID = '';
66:
67: // OSM Nominatim Search API利用時に知らせるメールアドレス
68: // https://wiki.openstreetmap.org/wiki/JA:Nominatim#.E6.A4.9C.E7.B4.A2
69: // ※OSM Nominatim Search APIを利用しないのなら登録不要
70: public $NOMINATIM_EMAIL = '';
71:
72: // IP2Location.io APIキー
73: // https://www.ip2location.io/
74: // ※IP2Location.ioを利用しないのなら登録不要
75: public $IP2LOCATION_API_KEY = '';
地図や住所検索として Google を利用するのであれば Google Cloud Platform APIキー とマップID が必要で、その入手方法は「Google Cloud Platform - WebAPIの登録方法」を、Yahoo!JAPAN を利用するのであれば Yahoo! JAPAN Webサービス アプリケーションIDが必要で、その入手方法は「Yahoo!JAPAN デベロッパーネットワーク - WebAPIの登録方法」を、IP2Location.ioを利用するのであれば「PHPでIPアドレスやホスト名から住所を求める」を、それぞれ参照されたい。
PHPのクラスについては「PHPでクラスを使ってテキストの読みやすさを調べる」を参照されたい。
準備:地図サービスの選択
weeklyCalendar.php
65: // 地図描画サービスの選択
66: // 0:Google
67: // 2:地理院地図・OSM
68: define('MAPSERVICE', 2);
69:
70: // 住所検索サービスの選択
71: // 0:Google
72: // 1:Yahoo!JAPAN
73: // 11:HeartRails Geo API
74: // 12:OSM Nominatim Search API
75: // 13:国土地理院ジオコーディングAPI
76: define('GEOSERVICE', 1);
77:
78: // 逆ジオコーディングサービスの選択
79: // 0:Google
80: // 1:Yahoo!JAPAN
81: // 11:HeartRails Geo API
82: // 21:簡易ジオコーディングサービス
83: define('REVGEOSERVICE', 1);
住所検索サービスは、Google、Yahoo!JAPAN、HeartRails Geo API、OSM Nominatim Search API、国土地理院ジオコーディングAPI から選べる。あらかじめ、定数 GEOSERVICE に値を設定すること。
逆ジオコーディングサービスは、Google、Yahoo!JAPAN、HeartRails Geo API、簡易ジオコーディングサービスから選べる。あらかじめ、定数 REVGEOSERVICE に値を設定すること。
準備:pahooCache クラス
pahooCache.php
13: class pahooCache {
14: const LIFE_CACHE = (2 * 60); // キャッシュ保持時間(デフォルト;分)
15: const DEF_DIRCACHE = './pcache/'; // キャッシュ・ディレクトリ(デフォルト)
16:
17: public $lifeCache; // キャッシュ保持時間(分)(0:キャッシュしない)
18: public $dirCache; // キャッシュ用ディレクトリ
19: public $httpHeader; // HTTPヘッダ(空文字の時は何も送らない)
20: public $error; // エラーフラグ
21: public $errmsg; // エラーメッセージ
22: public $debug; // デバッグ用ファイル名
23:
24: /**
25: * コンストラクタ
26: * 参考サイト https://www.pahoo.org/e-soul/webtech/php06/php06-72-01.shtm
27: * @param int $life キャッシュ保持時間(分)(省略可能)
28: * @param string $dir キャッシュ・ディレクトリ(省略可能)
29: * @param array $httpHeader httpヘッダに渡す配列(省略可能)
30: * USER AGENT偽装に用いることを想定
31: * (例)
32: * array(
33: * 'User-Agent: Mozilla/5.0(Windows NT 10.0; Win64; x64) pahooAppy/pahoo.org AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36',
34: * 'Accept-Language: ja-JP'
35: * );
36: * @return なし
37: */
38: function __construct($life=self::LIFE_CACHE, $dir=self::DEF_DIRCACHE, $httpHeader=NULL) {
39: if ($life < 0) {
40: $life = 0;
41: }
42: if (preg_match('/\/$/ui', $dir) == 0) {
43: $dir = $dir . '/';
44: }
45: $this->error = FALSE;
46: $this->errmsg = '';
47: $this->debug = '';
48: $this->lifeCache = $life;
49: $this->dirCache = $dir;
50: $this->httpHeader = $httpHeader;
51:
52: // PHP5以上であることを調べる.
53: if (! $this->isphp5over()) {
54: $this->error = TRUE;
55: $this->errmsg = '動作にはPHP5以上が必要です';
56: return;
57: }
58:
59: // キャッシュ・ディレクトリが無ければ作成する.
60: if (! is_dir($this->dirCache)) {
61: $res = mkdir($this->dirCache, 0744);
62: if ($res == FALSE) {
63: $this->error = TRUE;
64: $this->errmsg = 'キャッシュ・ディレクトリ "' . $this->$dirCache . '" の作成に失敗しました';
65: return;
66: }
67: }
68: }
そこで、頻繁に変更がないデータについては、一度取り込んだら、こちら側のサーバのローカルストレージにキャッシュしておく仕組みを用意した。それが pahooCacheクラス である。同梱のクラス・ファイル "pahooCache.php" は include_path が通ったディレクトリに配置してほしい。他のプログラムでも pahooCacheクラス を利用するが、常に最新のクラス・ファイルを1つ配置すればよい。
pahooCacheクラス の注意ポイントは、キャッシュ時間(単位:分)とキャッシュを保存するディレクトリをコンストラクタで指定している点だ。これらはプログラムによって変わるものである。インスタンス化するときの値は、pahooCacheクラス を利用するメイン・プログラムの方で解説する。
サイトによっては、User-Agent などを必要とすることがあるだろう。そこで、第3引数に HTTPヘッダ として送信するデータを配列で渡すことができるようにした。配列の構造はコメントを参照していただきたい。
PHPのクラスについては「PHPでクラスを使ってテキストの読みやすさを調べる」を参照されたい。
準備:pahooCalendar クラス
pahooCalendar.php
11: class pahooCalendar {
12: var $CONVERGE = 0.00005; // 逐次近似計算収束判定値
13: var $ASTRO_REFRACT = 0.585556; // 大気差
14: var $TDIFF = +9.0; // 世界時との時差
15: var $error, $errmsg; // エラーフラグ,エラーメッセージ
16: var $year, $month, $day; // 西暦年月日
17: var $tblmoon; // グレゴリオ暦=旧暦テーブル
18: var $language; // 表示言語(jp:日本語, en:英語, en3:英語略記)
19: var $resolve2033; // 旧暦2033年問題解決案 0:解決しない,1:案1,2:案2,3:対応案3 → https://www.pahoo.org/e-soul/webtech/php02/php02-45-01.shtm#php_resolveLunarCalendar2033
20: var $pcc; // pahooCacheインスタンス
21: var $CabinetOfficeHolidayTables; // 内閣府が公開している祝日表
22: const CABINETOFFICE_HOLIDAY_FILE = 'https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv'; // 内閣府が公開している祝日表URL
23:
24: /**
25: * コンストラクタ
26: * @param string $language 表示言語;省略時 jp
27: * @param float $tdiff 世界時との時差(省略時 +9.0;日本標準時)
28: * @param object $pcc pahooCacheインスタンス;省略時 NULL
29: * インターネット経由で内閣府の国民の祝日を参照するときに指定
30: * @return bool オブジェクト/FALSE:$tdiffが不正
31: */
32: function __construct($language='jp', $tdiff=+9.0, $pcc=NULL) {
33: $this->error = FALSE;
34: $this->errmsg = '';
35: $this->year = date('Y');
36: $this->month = date('n');
37: $this->day = date('j');
38: $this->resolve2033 = 0;
39: $this->pcc = $pcc;
40: $this->CabinetOfficeHolidayTables = array();
41:
42: $this->setLanguage($language);
43: if ($this->setTimeDifference($tdiff) == FALSE) {
44: $this->error = TRUE;
45: $this->errmsg = 'illegal tdiff';
46: }
47: }
解説:カレンダー作成
weeklyCalendar.php
274: /**
275: * カレンダー情報を追加する
276: * @param object $pcl pahooCalendarオブジェクト
277: * @param array $spot 場所情報
278: * @param array $items カレンダー情報配列
279: * @return なし
280: */
281: function addWeeklyCalendar($pcl, $spot, &$items) {
282: // 雑節テーブル
283: $table_za = array('春社', '秋社', '八十八夜', '入梅', '二百十日', '二百二十日');
284:
285: $longitude = $spot['longitude'];
286: $latitude = $spot['latitude'];
287: $height = $spot['height'];
288: $year = date('Y');
289: $month = 0;
290: $yy = ($items[0]['month'] <= 2) ? $year - 1 : $year;
291:
292: // 彼岸
293: $higan = $pcl->getHigan($year);
294: // 雑節
295: $zassetsu = $pcl->getZassetsu($year);
296: // 中秋の名月;このメソッド内で旧暦計算用テーブルを準備する
297: $midAutumnMoonList = $pcl->getMidAutumnMoon($yy, RESOLVE2033);
298:
299: foreach ($items as $i=>$item) {
300: if (is_numeric($i)) {
301: // 翌年
302: if ($month > $items[$i]['month']) {
303: $year++;
304: $month = $items[$i]['month'];
305: // 彼岸
306: $higan = $pcl->getHigan($year);
307: // 雑節
308: $zassetsu = $pcl->getZassetsu($year);
309: } else if ($month < $items[$i]['month']) {
310: $month = $items[$i]['month'];
311: }
312: $day = $items[$i]['day'];
313: $items[$i]['year'] = $year;
314:
315: // 日出没・月出没・月齢・距離
316: $sunrise = $pcl->sun_time(0, $longitude, $latitude, $height, $year, $month, $day);
317: $items[$i]['sunrise'] = $pcl->day2hhmm($sunrise);
318: $sunset = $pcl->sun_time(1, $longitude, $latitude, $height, $year, $month, $day);
319: $items[$i]['sunset'] = $pcl->day2hhmm($sunset);
320: $moonrise = $pcl->moon_time(0, $longitude, $latitude, $height, $year, $month, $day);
321: $items[$i]['moonrise'] = ($moonrise == FALSE) ? '---' : $pcl->day2hhmm($moonrise);
322: $moonset = $pcl->moon_time(1, $longitude, $latitude, $height, $year, $month, $day);
323: $items[$i]['moonset'] = ($moonset == FALSE) ? '---' : $pcl->day2hhmm($moonset);
324: $items[$i]['moonage'] = $pcl->moon_age($year, $month, $day, CALC_HOUR, 0, 0);
325: $items[$i]['moondist'] = sprintf('%4.3f', $pcl->distance_moon($year, $month, $day, CALC_HOUR, 0, 0));
326:
327: // 潮
328: $moonmeridian = $pcl->moon_time(2, $longitude, $latitude, $height, $year, $month, $day);
329: $moonmeridian = ($moonmeridian == FALSE) ? '---' : $pcl->day2hhmm($moonmeridian);
330: $items[$i]['tide'] = (preg_match('/([0-9]+)\:([0-9]+)/', $moonmeridian, $arr) > 0) ? $pcl->tide($year, $month, $day, $arr[1], $arr[2], 0) : '';
331:
332: // 二十四節気
333: $items[$i]['solarterm24'] = $pcl->getSolarTerm($year, $month, $day);
334:
335: // 七十二候
336: $items[$i]['solarterm72'] = $pcl->getSolarTerm72($year, $month, $day);
337:
338: // 土用
339: list($ss1, $ss2) = $pcl->isDoyo($year, $month, $day);
340: if ($ss2 == '明け') {
341: $ss2 = '';
342: } else if (($ss1 != '夏') && ($ss2 == '丑')) {
343: $ss2 = '';
344: }
345: if ($ss1 != '' && $ss2 != '') {
346: $ss2 = '土用の' . $ss2;
347: }
348: $items[$i]['doyo'] = $ss2;
349:
350: // 彼岸
351: if (($higan[0]['in']['month'] == $month) && ($higan[0]['in']['day'] == $day)) {
352: $solarterm = '彼岸入り';
353: $ss2 = '彼岸入り' . $ss2;
354: } else if (($higan[0]['out']['month'] == $month) && ($higan[0]['out']['day'] == $day)) {
355: $solarterm = '彼岸明け';
356: $ss2 = '彼岸明け' . $ss2;
357: } else if (($higan[1]['in']['month'] == $month) && ($higan[1]['in']['day'] == $day)) {
358: $solarterm = '彼岸入り';
359: $ss2 = '彼岸入り' . $ss2;
360: } else if (($higan[1]['out']['month'] == $month) && ($higan[1]['out']['day'] == $day)) {
361: $solarterm = '彼岸明け';
362: $ss2 = '彼岸明け' . $ss2;
363: }
364: // 雑節
365: foreach ($table_za as $label) {
366: if (($zassetsu[$label]['month'] == $month) && ($zassetsu[$label]['day'] == $day)) {
367: $solarterm = $label;
368: $ss2 = $label . $ss2;
369: }
370: }
371:
372: // 祝日
373: $holiday = $pcl->getHoliday($year, $month, $day, 'jp');
374: $items[$i]['holiday'] = ($holiday == FALSE) ? '' : $holiday;
375:
376: // 旧暦
377: list($oldmonth, $oldday, $oldleap) = $pcl->Gregorian2Lunar($year, $month, $day);
378: $oldleap = $oldleap ? '閏' : '';
379: $items[$i]['oldcal'] = sprintf('%s%d月%d日', $oldleap, $oldmonth, $oldday);
380: $items[$i]['rokuyou'] = $pcl->rokuyou($oldmonth, $oldday);
381:
382: // 日の干支
383: $items[$i]['eto'] = $pcl->eto_day($year, $month, $day);
384:
385: // 中秋の名月
386: $items[$i]['midAutumnMoon'] = (($midAutumnMoonList != FALSE) && ($midAutumnMoonList[0] == $year) && ($midAutumnMoonList[1] == $month) && ($midAutumnMoonList[2] == $day)) ? '中秋の名月' : '';
387: }
388: }
389: }
具体的には、毎日の天気予報情報を格納した配列 $items に対して、日出没・月出没・月齢、二十四節気、七十二候、土用、祝日、旧暦の順にデータを追加していく。
グレゴリオ暦から旧暦を求める手順は、「PHPで3ヶ月カレンダーを作る」で紹介している。
解説:表示とURLパラメータ
weeklyCalendar.php
574: // 各種パラメータを代入する.
575: $items = array();
576: $errmsg = $url = $address = '';
577: $id = (int)getParam('id', FALSE, 0); // 表示モード
578: $query = getValidString('query', $errmsg, '', QUERY_MIN_LEN, QUERY_MAX_LEN);
579: if ($errmsg != '') {
580: $errmsg = '検索キーの長さが' . $errmsg;
581: }
582: $latitude = (float)getParam('latitude', FALSE, DEF_LATITUDE); // 緯度
583: $longitude = (float)getParam('longitude', FALSE, DEF_LONGITUDE); // 経度
584: $zoom = (int)getParam('zoom', FALSE, DEF_ZOOM); // ズーム
585: $type = (string)getParam('type', FALSE, DEF_TYPE); // マップタイプ
586: $category = (string)getParam('category', FALSE, 'address'); // カテゴリ
587: $outenc = (string)getParam('charset', FALSE, INTERNAL_ENCODING);
weeklyCalendar?id=1&query=%E6%9C%AD%E5%B9%8C%E5%B8%82のようにすることで、query をキーワードにして検索した地点のカレンダーのみを表示させることができる。つまり、このスクリプトをホームページやブログの一部として組み込むことで、週間天気予報を表示するパーツになる。
query はUTF-8をURLエンコードしたもの。Yahoo!JAPAN住所検索を使う場合は、category をあわせて指定すること。
また、出力はHTML文のみとなり、スタイルシートは本体ページの方で用意していただきたい。必要なclassは次の通り。
weeklyCalendar.php
162: <style>
163: /* カレンダー:キャプション */
164: h3.caption {
165: width: {$width}px;
166: font-size: 140%;
167: text-align: center;
168: }
169: /* カレンダー */
170: table.DailyCalendar {
171: table-layout: fixed;
172: width: {$width}px;
173: border: solid 1px gray;
174: border-collapse: collapse;
175: margin-top:10px;
176: }
177: /* カレンダー:日付表示 */
178: td.label1 {
179: border:solid 1px gray;
180: border-collapse: collapse;
181: padding: 4px;
182: white-space: nowrap;
183: font-size: 120%;
184: text-align:center;
185: color: white;
186: background-color: dimgray;
187: }
188: /* カレンダー:旧暦表示 */
189: span.oldcal {
190: font-size: 80%;
191: }
192: /* カレンダー:ラベル表示 */
193: td.label3 {
194: width: {$width3}px;
195: border:solid 1px gray;
196: border-collapse: collapse;
197: padding: 4px;
198: white-space: nowrap;
199: font-size: 100%;
200: text-align: center;
201: background-color: gainsboro;
202: }
203: /* カレンダー:データ表示 */
204: td.data3 {
205: width: {$width3}px;
206: border:solid 1px gray;
207: border-collapse: collapse;
208: padding: 4px;
209: white-space: nowrap;
210: font-size: 100%;
211: text-align: center;
212: }
213: /* カレンダー:データ表示(小さい文字) */
214: td.data4 {
215: width: {$width3}px;
216: border:solid 1px gray;
217: border-collapse: collapse;
218: padding: 4px;
219: white-space: nowrap;
220: font-size: 70%;
221: text-align: center;
222: }
223: /* 月の満ち欠け画像 */
224: img.moonage {
225: width: {$width9}px;
226: height: {$width9}px;
227: padding: 5px;
228: }
229: /* 天気予報表:予報アイコン */
230: img.wicon {
231: width: 60px;
232: }
233: </style>
weeklyCalendar?id=1&query=%E6%9C%AD%E5%B9%8C%E5%B8%82&charset=SJISとすると、シフトJISで出力することができる。
weeklyCalendar?id=1&latitude=26.591&longitude=127.977のようにすることで、北緯26.591度、東経127.977度のカレンダーのみを表示させることができる。
質疑応答
ぱーまー様より【回答】
天気系のPHPサンプル3つですが、特定の場所の天気が3日分ほどしか表示されません。例えば、「京都市」「熱海市」などです。
最低気温や最高気温などの他のデータは取得しています。
一部の地域のみのようです。
下記の利用者様のサイトでは「京都市」「熱海市」も7日間表示されます。
https://www.benricho.org/koyomi/map_weeklycalendar/
なにか更新が必要なファイル等がございますでしょうか?
ご指摘ありがとうございます。
原因は、ダウンロードファイルに含まれている "jmaweatherspots.xml" が古かったためでした。新しいファイルに差し替えました。ダウンロードしてお試しください。
参考サイト
- PHPで地図で指定した場所の天気予報を求める:ぱふぅ家のホームページ
- PHPで天気予報を求める:ぱふぅ家のホームページ
- PHPで祝日を求める:ぱふぅ家のホームページ
- PHPで二十四節気一覧を作成:ぱふぅ家のホームページ
- PHPで土用を求める:ぱふぅ家のホームページ
- PHPで日出没・月出没・月齢を計算:ぱふぅ家のホームページ
- PHPでスーパームーンを計算する:ぱふぅ家のホームページ
- PHPで万年カレンダーを作る:ぱふぅ家のホームページ
- PHPで月の満ち欠けを描画:ぱふぅ家のホームページ
- PHPでGoogleを利用して住所から緯度・経度を求める:ぱふぅ家のホームページ
- PHPで緯度・経度から住所を求める:ぱふぅ家のホームページ
- PHPで2地点間の直線距離を求める:ぱふぅ家のホームページ
- PHPで YOLP API を利用して住所から標高を求める:ぱふぅ家のホームページ
- 地図・地名で指定した場所の週間カレンダー:みんなの知識 ちょっと便利帳
- 旧暦と六曜を作りましょう:こよみのページ
- 「月の名前」の計算方法:ここですという名前のブログやさん
- 太陽と月から受ける重力と潮汐力:pierres blanches と 《カガクするココロ》
- 潮汐の考えかた:T_NAKAの阿房ブログ

(2026年1月1日)旧暦テーブル作成不具合改善,PHP8.5対応
(2025年10月11日)「中秋の名月」を表示するようにした.
(2025年8月13日).pahooEnv 導入
(2025年6月14日)GoogleMaps JavaScript APIの変更に対応した.