人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPで、
下記の経度緯度を変換する為のコードを教えてください。
googlemapで利用していた経度緯度をmapfanの携帯サービスで利用したいです。
(たぶん preg_match 使うんだと思いますが。。。正規表現が勉強不足です。)

$lat = "39.710800"; //経度
$lng = "141.152435"; //緯度

■求める結果
経度:39.71.08.00
緯度:141.15.24.35

●質問者: kou32rr
●カテゴリ:インターネット ウェブ制作
✍キーワード:00 24 LNG PHP コード
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kn1967
●50ポイント
<?php
$lat = "39.710800"; //経度
$lng = "141.152435"; //緯度
echo preg_replace("/\.(\d{2})(\d{2})(\d{2})/",".$1.$2.$3",$lat);
echo "<br />";
echo preg_replace("/\.(\d{2})(\d{2})(\d{2})/",".$1.$2.$3",$lng);
?>|

小数点以下を2桁ずつに区切らせてます。

¥d{2}は数字2桁ずつを意味していて

$1は一つ目

$2は二つ目

$3は三つ目

の値がそれぞれに入りますのでピリオドを入れた形に直しています。

◎質問者からの返答

ありがとうございます。

preg_match じゃなくて preg_replace の方がシンプルにいきそうですね。


2 ● pahoo
●50ポイント ベストアンサー

入力値は、緯度・経度とも、整数部分1?3桁(符号無し)、小数部分6桁固定と想定しています。

ご質問にあった preg_match を使い、こんな感じでいかがでしょうか。

$lat = "39.710800"; //経度
$lng = "141.152435"; //緯度

$pat = '/(\d{1,3})\.(\d{2})(\d{2})(\d{2})/';

unset($arr);
$arr = array();
preg_match($pat, $lat, $arr);
if (count($arr) != 5) {
 echo 'lat error!!';
 exit(1);
}
$lat2 = sprintf("%d.%02d.%02d.%02d", $arr[1], $arr[2], $arr[3], $arr[4]);

unset($arr);
$arr = array();
preg_match($pat, $lng, $arr);
if (count($arr) != 5) {
 echo 'lng error!!';
 exit(1);
}
$lng2 = sprintf("%d.%02d.%02d.%02d", $arr[1], $arr[2], $arr[3], $arr[4]);

echo 'lat: ' . $lat . ' => ' . $lat2 . '<br />';
echo 'lng: ' . $lng . ' => ' . $lng2 . '<br />';
◎質問者からの返答

丁寧なコードありがとうございます。

勉強してみます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ