>file_get_contentsはphpの関数だと思いますが、 ( $GeoUrl . $request);となって
>いるのは、上で定義している$GeoUrlと$requestの部分を xmlで取得する、と言う
>意味でしょうか?
file_get_contents(ファイル名)関数は、ファイル名のファイルの内容を全て文字列に読み込む関数ですが、ファイル名にURLを指定す
れば、HTTPを通してURL上のファイルも読み込めます。
file_get_contents( $GeoUrl . $request); は変数$GeoUrlの中身と変数$requestの
中身を . で連結して、URLを作り、HTTP経由のリクエストの結果を変数$xmlに代入しているだけです。
>ソースコードの全体を見せていただけると大変助かります。
shevaさんの住所を入力する管理画面は、XMLを取得するPHPプログラムと別のページだと、勝手に勘違いしていました。で、以下のソースコード
は、お助けにはならないと思いますが、一応載せます(PHP4です。)
(POSTされた住所を受取り緯度・経度を返すPHPプログラム)
<?php
//XMLを取得するだけなら下記2行は不要です。
set_include_path(get_include_path() . PATH_SEPARATOR . '../local-
pear');
require_once("XML/Unserializer.php");
//スーパーグローバル変数$_POSTより、住所を取り出します
if (!empty($_POST["addr"])){
$addr=$_POST["addr"];
}else{
print "住所を入力して下さい";
exit;
}
//住所をUTF-8に変換します。
mb_convert_variables("UTF-8","auto",$addr);
$func = "googleGeoCoding";
list ($sarched_addrG,$latG,$lngG) = $func($addr);
print " 住所: $sarched_addrG <br>" ;
print " 緯度: $latG <br>";
print " 経度: $lngG <br>";
//ここからがジオコーディングしているファンクションです。
function googleGeoCoding($addr){
//住所をURLエンコード(%xx%xx%...)します。
$addr = urlencode($addr);
//リクエストのパラメーターを連結します。
$request = "&q=" . $addr . "&key=" . $apikey . "&output=xml" ;
//GoogleのURLとリクエストパラメーターを連結したものを、ファイル名
//としてfile_get_contents関数に渡し、読み込んだ結果を$xmlに代入
//しています。
$xml = file_get_contents( $GeoUrl . $request);
//以下は、XMLをパースして検索結果の住所・緯度・経度を
//取り出している部分ですので、取得したXMLをそのまま返す
//なら不用です。
$options = array('encoding' => 'UTF-8');
$unserializer =& new XML_Unserializer($options);
$unserializer->setOption('parseAttributes', TRUE);
$status = $unserializer->unserialize($xml);
if (PEAR::isError($status)) {
die($status->getMessage());
}
$data = $unserializer->getUnserializedData();
if ($data[Response][Status][code] == 200 &&
$data[Response][Placemark][AddressDetails][Country]
[CountryNameCode] == "JP"){
$sarched_addr = $data[Response][Placemark][AddressDetails][Country]
[AddressLine];
list($sarched_Lon,$sarched_Lat,$altitude) =
explode(",",$data[Response][Placemark][Point][coordinates]);
//検索結果の住所をEUC-JPに戻しているだけです。
$sarched_addr = mb_convert_encoding($sarched_addr, "EUC-JP",
"auto");
}else{
$sarched_addr = '不明';
$sarched_Lat = '';
$sarched_Lon = '';
}
return array($sarched_addr,$sarched_Lat,$sarched_Lon);
}
?>
上記PHPプログラムに住所をPOSTするHTMLのフォーム
<form name="subform" id="subform" action="受取るPHPプログラムの名前"
method="post" >
<input type="text" name="addr" id="addr" size="40" />
<input type="submit" name="submitbotton" id="submitbotton" value="実行" /
>
<input type="reset" name="reset" value="クリア" />
</form>