PHPを利用してWebサイトを製作中です。
天気予報と連動させるような機能を考えているのですが、肝心の天気予報の取得の方法が分かりません。
livedoorのWeather Hacksが利用できれば便利なのですが、商用利用は不可とされています。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

PHPとは関係ないっすね



天気予報情報を商用利用するには、天気予報屋から買うのが一般的です
無料で商用利用可能な天気予報情報を垂れ流ししているところって存在しないんじゃないかな
http://www.halex.co.jp/halexbrain/weather-biz/wa …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

確かにPHPとは関係ありませんね。質問をするカテゴリーを間違えました、すみません。

天気予報屋から買うしかないですか・・・。残念ですが仕方がありません。予算もありませんので、当面は諦めようかと思います。

お礼日時:2008/03/21 16:23

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qピンポイント天気予報について

ピンポイント天気予報についての疑問なのですが、うちの市町村には気象台も定点観測所もアメダスもないのです。
なのに、ピンポイント予報では、天気、最高最低気温、降水確率がでてきます。どこでどうやって観測したデータを、だれが判断してそういう予報をしているのでしょう?

Aベストアンサー

予報ですから,計算機による計算結果だと思います.
勿論,観測結果を初期条件として計算を進めることで,
正確になるように努めています.

最近になってピンポイントで天気予報が出来るようになったのは,
ひとえにスーパーコンピュータの性能向上です.

天気予報の計算をするためには,まず日本を小さな区分(メッシュ)に分ける
(有限要素法とか差分法とかの手法です)のですが,
このメッシュを小さく(つまり狭い地域に分ける)すると,
計算時間が何倍と言うのではなく,2の何乗倍とかで増えて行きます.

従って,計算機の性能に応じてメッシュの大きさが制限される訳です.
計算機の処理速度が上がれば,それだけメッシュを小さく出来るので,
ピンポイント天気予報も可能になって来ます.

Qxhtmlの最初の行に半角スペースが入ってしまいます(APIの天気予報を、PHP+smarty〔xhtml〕で表示したい)

APIの天気予報を、PHP+smartyで表示しようと思います。しかし表示された画面のソースを見ると、xhtmlの最初の行に半角スペースが入って、htmlと認識されてしまいます。原因は以下のファイルのようなのですが、なにか原因がありますでしょうか?ちなみに、<?phpはファイルの先頭に、?>の後の改行はありません、文字コードはutf-8bom無しです
以下のファイルにidをpostしています。どうかご教授いただけないでしょうか?..........................................................
$documentroot = dirname( __FILE__) . '/';
require_once $documentroot . '../../php_libs/config/config.inc.php';
require_once("jsphon2/Jsphon.php");
require_once ("Net/UserAgent/Mobile.php");
require_once ("Net/IPv4.php");
require_once( _SMARTY_LIBS_DIR . "Smarty.class.php");

$smarty = new Smarty();

$smarty->template_dir = _SMARTY_TEMPLATES_DIR;
$smarty->compile_dir = _SMARTY_TEMPLATES_C_DIR;
$smarty->config_dir = _SMARTY_CONFIG_DIR;
$smarty->cache_dir = _SMARTY_CACHE_DIR;
$smarty->caching = 2;

if(isset($_POST['id'])){
//ライブドアの天気予報を表示する関数
function lwws($city,$day){
//XMLデータ取得用ベースURL
$req = "http://weather.livedoor.com/forecast/webservice/rest/v1";
//XMLデータ取得用リクエストURL生成
$req .= "?city=".$city."&day=".$day;
//XMLファイルをパースし、オブジェクトを取得
$xml = simplexml_load_file($req)
or die("XMLパースエラー");

$lwwsarea = $xml->pinpoint->location->title;
$lwwstitle = $xml->title;
$lwwsimage = $xml->image->url;
$lwwsalt = $xml->image->title;
$lwwsmax = $xml->temperature->max->celsius;
$lwwsmin = $xml->temperature->min->celsius;
$lwwsdescription = $xml->description;
$ret = '<div class="lwws">';
$ret .= '<div>'.'<span style="color:#ff0000;"></span>'.$lwwsarea.'の天気</div>';
$ret .= '<div style="background-color:#fce6f3">'.$lwwstitle."</div>";
$ret .= "<br /><div><img src=\"".$lwwsimage."\" alt=\"".$lwwsalt."\" /></div>";
$ret .= "<div>最高気温".$lwwsmax."度</div>";
$ret .= "<div>最低気温".$lwwsmin."度</div>";
$ret .= "<div>".$lwwsdescription."</div>";
$ret .= "</div>";
return array ($ret,$lwwsarea,$lwwstitle);
}

function lwws2($city,$day){
//XMLデータ取得用ベースURL
$req = "http://weather.livedoor.com/forecast/webservice/rest/v1";
//XMLデータ取得用リクエストURL生成
$req .= "?city=".$city."&day=".$day;
//XMLファイルをパースし、オブジェクトを取得
$xml = simplexml_load_file($req)
or die("XMLパースエラー");

$ret = '<div class="lwws2">';
$ret .= '<div style="background-color:#fce6f3">'.$xml->title."</div>";
$ret .= "<br /><div><img src=\"".$xml->image->url."\" alt=\"".$xml->image->title."\" /></div>";
$ret .= "<div>最高気温".$xml->temperature->max->celsius."度</div>";
$ret .= "<div>最低気温".$xml->temperature->min->celsius."度</div>";
$ret .= "<br />";
$ret .= "</div>";
return $ret;
}
//リクエストパラメータ設定
$city = $_POST['id']; //場所を設定
$day = "today"; //今日の天気
$day2 = "tomorrow";
$day3 = "dayaftertomorrow";

//ライブドアの天気予報を表示する関数をコールする
list($ret, $lwwsarea1, $lwwstitle1) = lwws($city,$day);
$ret2 = lwws2($city,$day2);
$ret3 = lwws2($city,$day3);
//キャッシュの残り時間を生成
$now=time() +(60 * 24);
$asu=time() +(60 * 60 * 24);
$y=date("Y", $asu);
$m=date("m", $asu);
$d=date("d", $asu);
$asu_byou= mktime(0, 0, 0, $m, $d, $y);
$sa= $asu_byou - $now;
}
$smarty-> assign ('lwws1' , $ret);
$smarty-> assign ('lwws2' , $ret2);
$smarty-> assign ('lwws3' , $ret3);
$smarty-> assign ('lwwsarea', $lwwsarea1);
$smarty->assign('city', $city);

$cache_id = $city;
//あすの0:00までの秒数をセットする
$smarty->cache_lifetime = $sa;
if ($smarty->is_cached("weather.tpl", $cache_id)){
$smarty->display("weather.tpl", $cache_id);
exit();
}
$smarty->display("weather.tpl", $cache_id);

APIの天気予報を、PHP+smartyで表示しようと思います。しかし表示された画面のソースを見ると、xhtmlの最初の行に半角スペースが入って、htmlと認識されてしまいます。原因は以下のファイルのようなのですが、なにか原因がありますでしょうか?ちなみに、<?phpはファイルの先頭に、?>の後の改行はありません、文字コードはutf-8bom無しです
以下のファイルにidをpostしています。どうかご教授いただけないでしょうか?..........................................................
$documentroot = dirname( __F...続きを読む

Aベストアンサー

同じ現象か分かりませんが、
smarty の テンプレート内で BOM 付きファイルを複数 include した場合に、余分な行が(正確には違うと思います)入る現象が起こりました。

恐らく、BOM が複数重なって、それが予期しない文字として認識されてしまったのだと思います。

私の場合は、BOM をひとつのファイルだけに付けて出力したら直りました。(見る人が見れば、まったくの凡ミスです)include するファイルには BOM を付けないようにすると良いかと思います。

BOM 無しファイルを扱っているということなので、違うかもしれませんが、参考までに。

QNHKデータ放送の天気予報と携帯での調べるピンポイント天気予報どちらが正しいのか

NHKのデータ放送で調べるの天気予報の結果と、携帯での調べるピンポイント天気予報の結果に違いがあります。12時間後の天気い予報で、雨の降りだし時間が6時間もずれがあったり、曇りと雨との予報の食い違いがあったり、少々の食い違いでなく大きく違っています。(先に書いた内容は大きな違いと思っています)今から行動するのに大きな対応の差が出てきます。
皆さん困っているのではないでしょうか。
どちらが正しいのか、どちらを信じたらよいのか、またはここならば間違いないというものがあればお教え願えないでしょうか。

Aベストアンサー

「予報」「予想」「推定」なのですから、正しいも正しくないもありません。「当たることが多い」のか「外れが多い」のかは、利用者が判断すればよいことです。
また、「地域」といっても、数キロ離れれば天候には差があるので、どちらを基準にするかでも変わります。

>どちらを信じたらよいのか

 自分にとって、一番「リスク回避」ができるものを選べばよいのです。「精度が高い」ことよりも、どちらが自分のリスクを少なくするかで判定する方が賢いです。
 「傘を持つかどうか」は、最も降水があると予想している予報を参考にする、コートを着ていくかどうかは夜の最低気温の一番低い予報を参考にするなど。

 一般の予報であれば、「雨は降らない」と予報したのに雨が降ったら不評ですが、「雨が降るかも」と言って降らなくてすめば不評は書いません(カンカン照りに晴れたら怒りますが)。
 これが「弁当業者」にとっては、「雨が降るかも」と言って降らなかったら「もっと弁当を仕入れておけばたくさん売れたのに」ということになり、よい方に外れても不評を買います(その予報業者は信用されなくなる)。
 予報する側にとっても、「利用者がどういう人か」によって、予報のリスクをどちらにとるかを変えているはずです。

「予報」「予想」「推定」なのですから、正しいも正しくないもありません。「当たることが多い」のか「外れが多い」のかは、利用者が判断すればよいことです。
また、「地域」といっても、数キロ離れれば天候には差があるので、どちらを基準にするかでも変わります。

>どちらを信じたらよいのか

 自分にとって、一番「リスク回避」ができるものを選べばよいのです。「精度が高い」ことよりも、どちらが自分のリスクを少なくするかで判定する方が賢いです。
 「傘を持つかどうか」は、最も降水があると予想し...続きを読む

Q既存エンジンを利用したHTML&PHPの検索・取得は不可能?

PHPで、URL抽出をしたいと思っています。

たとえば、gooのブログ検索などの検索エンジンを利用して、
そこから返されたURLの取得、
もしくは返されたHTMLのソース取得の
どちらかをしたいと思っています。
つまり、既存の検索エンジンを利用したいと思っているのですが・・・
とりあえずこんなHTMLをかいたのですが。
______________________________________________________________________________
<form method="get" action="http://blog.search.goo.ne.jp/search_goo/result/" id="query_top">
<label for="searchtop">検索:</label>
<input type="text" name="MT" value="" id="searchtop" size="45">
 スコア 

<select name="rm">
<option value = '0'>全部</option>
<option value = '1' selected>1 以上</option>
<option value = '2'>2 以上</option>
<option value = '3'>3 以上</option>
<option value = '4'>4 以上</option>
<option value = '5'>5 以上</option>
</select>

<input type="submit" name="btn_g" class="gbbtn_search" value="gooブログ検索"></form>
_____________________________________________________________________________________
これはただHTMLでフォームを作って、gooにキーワードを飛ばすだけなのですが、
この後表示される(帰ってくる)URLをPHPなどで取得することはできないでしょうか?
取得して、違うプログラムで利用したいと考えています。
しかし、個人的に色々考えたのですが、PHPだと物理的に無理な気がしてきました。
ただ、HTMLに埋め込むならPHPがいいのかなと思いました。
だれかわかる人いますでしょうか?どうかPHPに精通している方、ぜひ宜しくお願いしますm(_ _)m

PHPで、URL抽出をしたいと思っています。

たとえば、gooのブログ検索などの検索エンジンを利用して、
そこから返されたURLの取得、
もしくは返されたHTMLのソース取得の
どちらかをしたいと思っています。
つまり、既存の検索エンジンを利用したいと思っているのですが・・・
とりあえずこんなHTMLをかいたのですが。
______________________________________________________________________________
<form method="get" action="http://blog.search.goo.ne.jp/search_goo/result/" id="query_top">
...続きを読む

Aベストアンサー

yyr446です。
<<自作サーバで以上を正常に動作させられないのですが、
PHPの設定で必要なことってありますでしょうか?>>
自作サーバ? windows or lynux or other  バージョン?
私のは
http://www.my-sv.net/server.shtml
のレンタルサーバーです。
別途質問を起てた方が回答がつきやすいと思います。

Q当日の天気予報をauの携帯メールに配信してくれるサービスありませんか?

最近、朝ぎりぎりで仕事に出かけるため天気予報をチェックせず、
帰りに雨が降ってきて困ることが立て続けにありました。
なので朝携帯メールに天気予報が来ればそれを見てチェックできるので便利だなあと思うのですが、
早朝(8時くらいまで)にその日のピンポイント天気予報を携帯メールで配信してくれるサービスはありませんか?
以前TSUTAYAのメルマガを取っていたとき、翌日のピンポイント(市単位)の天気予報がおまけでついていて便利でしたが、
できれば当日朝その日の天気が届く単独のサービスが希望です。
キャリアはauです。有料でも構いません。場所は都内です。
ご存知の方よろしくお願いします。

Aベストアンサー

ぐるなびの会員登録が必要ですが、お天気情報配信サイトの「月形半平太メール(無料)」が便利ですよ。auもOKです。
登録した携帯電話に今日と明日のピンポイント予報がメールされ、また「雨降り始めーる」で、急な雨の予測情報が得られます。場所は市町村レベルで、メールの配信時間も設定できます。
私も利用していますが、とても便利ですよ。

参考URL:http://www.gnavi.co.jp/campaign/hanpeita/

Qphpを利用して商用HPを作成したいのですが。。

はじめまして。
PHPについてご相談させていただきます。

私はphpを利用して商用HPを作成したいと考えております。
たとえば下記のようなHPです。
ttp://guideme.jp/works.php

phpやプログラミングについては全くのド素人なのですが、上記のようなHPを作成できるようになるには独学では困難でしょうか?

PHPを使いこなしている方々は専門学校などで学ばれたのでしょうか?

お手数ですが、御回答よろしくお願いいたします。

Aベストアンサー

独学で可能です。

書店で実際に見てとっつきやすそうな書籍を選んで購入してください。
ある程度勉強したら、
まず、フリーで配布されているものをサンプルとして勉強されると良いと思います。
同時に、インターネットやhttp(Web)の仕組みなども勉強しないといけません。
結構必要な知識も多くたいへんですがやる気があれば大丈夫だと思います。

Q正確な天気予報サイトはありませんか?

正確な天気予報サイトはありませんでしょうか?
Yahooなどで天気予報はピンポイントでありますが、
「大気が不安定で午後から雷雨の可能性がある」等、
TVの天気予報で警告していたことが一切載っていません。
予報した情報が古いせい?

ご存知でしたら宜しくお願い致します!

Aベストアンサー

となるとここにいくしかないでしょう
 気象庁
 http://www.jma.go.jp/jma/index.html

しかしながら、どのサイト、どの情報でもあくまでも「天気予報」と予報でしかないので、正確ではないです。
的中率が向上してきているとはいえ、100%じゃないのは未来のことは誰にもわからないというところでしょうか。

QPHP Webページのタイトルを取得したい

検索したものに少し手を加えて、以下の関数を使って、URLを元にウェブページのタイトルを取得しています。

 function getPageTitle( $url ) {
  $html = file_get_contents($url);
  $enc_format = "JIS, eucjp-win, sjis-win, UTF-8";
  $html = mb_convert_encoding($html, "UTF-8", $enc_format);
  preg_match("/<title>(.*)<\/title>/is", $html, $retArr);
  return $retArr[1];
 }

しかし、ページによってはタイトルを取得するまでの時間が遅いです。おそらく、HTMLをすべて読み取るまで、終了しないため、遅くなるのだと思います。今回はタイトルを取りたいだけなので、もっと早く処理ができてほしいです。何か方法はございますか?

Aベストアンサー

まずは

$html = file_get_contents($url);



$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);

に変えるところからどうぞ。これだけでかなり速くなると思います。これで速度が足りなければ fopen で1行ずつ読み込んでいくことも検討しましょう。なお、提示された関数中の文字コードの羅列順序が不適切です(私もググって出てきたってことで以前はこれ使ってましたが、誤りです)。以下に正しい順番に直したサンプルを掲載しておきます。

function getPageTitle($url) {
  static $regex = '@<title>([^<]++)</title>@i';
  static $order = 'ASCII,JIS,UTF-8,CP51932,SJIS-win';
  static $ch;
  if (!$ch) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  }
  curl_setopt($ch, CURLOPT_URL, $url);
  $html = mb_convert_encoding(curl_exec($ch), 'UTF-8', $order);
  return preg_match($regex, $html, $m) ? $m[1] : '';
}

また、そもそも遅い原因が「この関数の実行を繰り返している」ということであれば、今はオーダー表現で表せば O(n) 時間かかっていることになりますが、回線が許す限り O(1) の実行時間にする方法があります。これに該当する場合はその点の補足をお願いします。

まずは

$html = file_get_contents($url);



$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);

に変えるところからどうぞ。これだけでかなり速くなると思います。これで速度が足りなければ fopen で1行ずつ読み込んでいくことも検討しましょう。なお、提示された関数中の文字コードの羅列順序が不適切です(私もググって出てきたってことで以前はこれ使ってましたが、誤りです)。以下に正しい順番に直したサンプルを掲載しておきます。

function getPageT...続きを読む

Qyahoo!天気情報について

市町村単位での天気予報を見ることのできる「yahoo!ピンポイント天気」を使用していますが、経験上、予報が外れることが多いと感じています。
偶然が重なっただけなのかもしれませんが、
同じように「外れることが多い」と感じている方、
あるいは「そんなことない。とても正確だ」と感じている方、
どちらでも結構ですので、ご意見をお聞かせください。

Aベストアンサー

 ヤフーより細かい単位(郵便番号など)で予報するサイトがあります。これも併せて参考にするというのは如何ですか?

参考URL:http://weathernews.jp/

QPHPでWebページの特定部を取得したいのですが、上手くいきません。

PHPでWebページの特定部を取得したいのですが、上手くいきません。
現在file_get_contentsを用いてURLを指定して取得し、preg_matchの引数にする方法で行っています。
また、preg_matchは以下のように用いています。
preg_match("/パターン(.*?)パターン/s", $html, $matches);
print_rで$matchesを表示してみたところArray()のみ出力されます。

また、話が逸れて申し訳ないですが、上記とは別にfile_get_contentsを用いて動的にURLを指定して取得しているのですが、処理に時間がかかります。(約10秒)
$wordをURLに組み込む変数として以下のように記述しています。
file_get_contents("http://…".$word."…(URLの続き)");

以上の2点についてご教示願います。

Aベストアンサー

質問の意図が図りかねます・・・

どういうテキストから、どういうパターンで、どう抜きたいのか書かないと
「たぶんパターンが間違っている」としか回答しようがありません。

また、file_get_contentsで処理時間がかかる・・・というもの
環境によるものなのか、指定方法が悪いのか、こちらではわかりかねます。
とりあえずやるなら、バイナリセーフではないですがreadfileなどでざっと
データを拾ってしまう手もあるので検討してみてはどうでしょうか?


人気Q&Aランキング

おすすめ情報