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と関連する良く見られている質問

Qweather.comのお天気DBについて

PHP + MySQLでサイト構築をしています。

ネタ探しに色々なWebサイトを見ていると、MamboというCMSを見つけました(デジパワーという会社が日本語版の製作をしている様です)。

デジパワー(http://www.pwr.jp/)のHPに、Mambo用のお天気モジュール(weather.comから天気情報を取得)がありましたので、これを何とかして自分のサイトに組み込めないかと四苦八苦している最中です。

PHPのソースを見ているのですが、weather.comのDBに接続する様な部分がなく(クエリーは投げているみたいですが)、どの様にして実現しているのかわかりません。

もし、詳しい方がおられましたら、このモジュールの仕組み、もしくは、自サイトに導入する方法をご教授頂けたらと思っております。

宜しくお願い致します。

Aベストアンサー

情報そのものはwww.msnbc.comにあるcgi(weather_d_src.asp)から読み取っているみたいですね。(ここがweather.comのデータベースに繋いでいるのかな?)
なので、外部への接続はただのHTTPによるアクセスであって、データベースの操作はローカルに対してだけのようです。

参考URL:http://www.msnbc.com/m/chnk/d/weather_d_src.asp?acid=JAXX0074

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 無しファイルを扱っているということなので、違うかもしれませんが、参考までに。

Qlivedoorの天気を出力したいのですが

livedoorからjson形式で天気情報を取得し、
連想配列に格納して出力しようと考えています。

下記のエラーで困っております。
お手数ですが、ご教授いただけますと幸いです。

【livedoor天気】
http://weather.livedoor.com/weather_hacks/webservice

■環境:Apache/2.4.3 (Win32) OpenSSL/1.0.1c
PHP/5.4.7

■weather.php

<?php
//livedoorからjsonで天気情報を取得
$url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=410020";

$json = file_get_contents($url,true);

if ($json == false) {
echo "JSONの戻り値がfalse。";
return;
}

$obj = json_decode($json);

//取得したデータを連想配列に格納していく
$weather = array(
//今日の最高気温
"today_max" => $obj->forecasts[0]->temperature->max->celsius,
//明後日の最低気温
"day_after_tomorrow_max_celsius" => $obj->forecasts[2]->temperature->max->celsius,
//明後日の最低気温
"day_after_tomorrow_min" => $obj->forecasts[2]->temperature->min->celsius
);

echo var_dump($obj);

echo $weather['today_max'];//都市を変え最高気温がある場合だと19℃とか出力される
echo $weather['today_max'];//最高気温がNULLだと下記エラーが出力される
?>


■weather.phpを実行時のエラー
Notice: Trying to get property of non-object in C:\xampp\htdocs\study\weather.php on line 19
(19行目は上記、今日の最高気温)
Notice: Trying to get property of non-object in C:\xampp\htdocs\study\weather.php on line 32
(32行目は上記、明後日の最高気温)
Notice: Trying to get property of non-object in C:\xampp\htdocs\study\weather.php on line 33
(33行目は上記、明後日の最高気温)

---------------

最高気温がnullだった場合でもエラーが出ないようにしたいです。
$obj=json_decode($json);
$objは連想配列、$weatherに格納したいと考えてます。


自分で調べた結果、is_nullやemptyで回避とありましたが
解決には至りませんでした。

■参考URL
http://nanoappli.com/blog/archives/810


以上、宜しくお願い致します。

livedoorからjson形式で天気情報を取得し、
連想配列に格納して出力しようと考えています。

下記のエラーで困っております。
お手数ですが、ご教授いただけますと幸いです。

【livedoor天気】
http://weather.livedoor.com/weather_hacks/webservice

■環境:Apache/2.4.3 (Win32) OpenSSL/1.0.1c
PHP/5.4.7

■weather.php

<?php
//livedoorからjsonで天気情報を取得
$url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=410020";

$json = file_get_contents($url,true);

if ($j...続きを読む

Aベストアンサー

手元の環境では、issetだけでエラー回避出来ましたが・・・

<?php
$url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=410020";
$json = file_get_contents($url,true) or die("JSONの戻り値がfalse。");
$obj = json_decode($json);

$weather = array();
if (isset($obj->forecasts[0]->temperature->max->celsius)) { $weather["today_max"] = $obj->forecasts[0]->temperature->max->celsius; }
if (isset($obj->forecasts[2]->temperature->max->celsius)) { $weather["day_after_tomorrow_max_celsius"] = $obj->forecasts[2]->temperature->max->celsius; }
if (isset($obj->forecasts[2]->temperature->min->celsius)) { $weather["day_after_tomorrow_min"] = $obj->forecasts[2]->temperature->min->celsius; }

echo "今日の最高気温:";
echo isset($weather['today_max']) ? $weather['today_max'] . "<br />" : "取得不可<br />";
echo "明後日の最高気温:";
echo isset($weather['day_after_tomorrow_max_celsius']) ? $weather['day_after_tomorrow_max_celsius'] . "<br />" : "取得不可<br />";
echo "明後日の最低気温:";
echo isset($weather['day_after_tomorrow_min']) ? $weather['day_after_tomorrow_min'] . "<br />" : "取得不可<br />";

echo "<pre>";
var_dump($obj);
echo "</pre>";

手元の環境では、issetだけでエラー回避出来ましたが・・・

<?php
$url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=410020";
$json = file_get_contents($url,true) or die("JSONの戻り値がfalse。");
$obj = json_decode($json);

$weather = array();
if (isset($obj->forecasts[0]->temperature->max->celsius)) { $weather["today_max"] = $obj->forecasts[0]->temperature->max->celsius; }
if (isset($obj->forecasts[2]->temperature->max->celsius)) { $weather["day_after_tomor...続きを読む

QPC&携帯連動型サイト製作方法について

お世話になっております。

PC&携帯連動型サイト製作方法について、
参考になるサイト、または書籍がありましたら、
ご教授願います。

また、WEBアプリケーションの自動生成ツールで、
法人でなくても購入できるソフト、または無料で
使えるものがありましたら、ご教授願います。

Aベストアンサー

自動生成をするにしても、コンテンツ量、テキスト量など、PCで表示しきれるものが、携帯電話で読みきれる量ではない場合がありますので、
製作者の意図でコンテンツのデザインを決める必要があり、質問者さんのイメージに合った物があるかどうかは微妙な線だと思います。

CMS(コンテンツマネジメントシステム) 携帯電話対応 オープンソース
といった単語であたるのが良いかもしれません。
が、自動生成するツールをお探しとのことなので、ずれてるかもしれません。

書籍に関しては、「PHP×携帯サイトデベロッパーズバイブル」などが該当しますが、これは携帯サイトを構築するに当たっての作法や、機種依存の解決手段や絵文字の対応などによる内容なので、最短の方法ではないです。

・・・と質問者さんの想定する回答を行うには、行いたいことに対する方法/手段が結構な量なので、説明が困難です。

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

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

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

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

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

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

Aベストアンサー

独学で可能です。

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


このカテゴリの人気Q&Aランキング

おすすめ情報