質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

6回答

7353閲覧

住所を分割する方法を探しています

s-asai

総合スコア15

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

1グッド

1クリップ

投稿2017/08/08 02:32

住所を
・市町村
・市町村以降
に区切りたいです。

現状は
一番目の素子 + 「市」
<br>
二番目の素子

としていますが、
二番目の素子に「市」が入るケースが発生し対応できないでいます。

下記の様な方法も考えたのですが、一番目の素子に「市」が入ってきた場合同じような事が発生すると考えられるため、
悩んでいます。

一番目の素子 + 「市」
<br>
「市」の後ろの残り部分

解決方法があれば教えてください。

matobaa👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x_x

2017/08/08 02:47

素子とは何でしょうか?
guest

回答6

0

結論から言えば、データを全くなしにやることは不可能です(例えば、「佐賀県杵島郡大町町/大町」のようなものは、データがないと切れません)。

なるべく短い正規表現で住所を「都道府県/市区町村/それ以降」に分けるエクストリームスポーツ - Qiita

投稿2017/08/08 02:45

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/08/08 03:10

その前に市原市(笑)
maisumakun

2017/08/08 03:58

「市川市市川」という住所に圧倒された思い出が
guest

0

その手の処理は四日市市とか市川市とかではまりますね
住所検索あるあるとしては東京都府中市に「京都府」がヒットしたりとかね
全市区町村名をDB化しないかぎりプログラム的にやるのは難しいとおもいますよ

投稿2017/08/08 03:08

yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

地方自治団体(都道府県・市区町村)については、総務省により全国地方公共団体コードが振られており、そのデータをもとにした表記であれば「どこまでが市区町村か」は最長一致で切ることができます。
ただ、都道府県を省略された場合、次のような例については判断できなくなります。

  • 府中市(東京都と広島県)
  • 伊達市(福島県と北海道)

※この他群名や町名が重複する例もあります。上川郡なんて北海道に3か所(律令国としては別の国にあるのだが、地理上は隣接していて、あまつさえ同一振興局内に2つある)あって、旧国名を付記しないと区別しきれないなんてのも

また、表記揺れがあると処理しきれないのは maisumakun さんのコメントの通りです。
入力データ自体が正規化(総務省データに書かれているのと同じ表記を使う)されていないと、現実には難しいです。
郵便番号があれば、郵便番号データには該当する地方公共団体コードが含まれますので、そちらをもとにしたほうが良いかもしれません。

投稿2017/08/08 03:21

編集2017/08/08 03:31
tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

解決方法があれば

⇒そもそも分割しなくてはいけない理由は何でしょうか?
改行等を入れたい 程度であれば、つなげる仕様のままにする等でも良いとは思います。
また、画面に入りきらない・・・等であっても、
特定の長さ以上の場合、その長さ以降は「…」とする等
仕様面の解決方法もある気がします。

⇒分割にこだわりがあり、以下の情報を持っていれば、以下のサイトでダウンロードしたデータで
マッピングして分割する方法があります。

・郵便番号:郵便局のホームページよりダウンロード

・緯度経度:国土交通省より利用規約に同意してダウンロード

⇒「いやいや、わざわざダウンロード・管理しなくても良い方法はない?」ということであれば、
以下のサイトで分割したい住所をキーワードとしてAPIに投げれば、
分割してレスポンスされるかもしれません。
キーワードによる住所検索 API
※試してないので分かりませんが、多少の揺らぎもある程度は分割してくれるかもしれません。

投稿2017/08/08 04:02

tomari_perform

総合スコア760

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

住所分割についてのアプローチについてですが、目的によって異なると思います。

・目的が一過性のデータ補正
正規表現などを用いながら分割精度を上げ、その分割でも対応できないものが極力少ない状態になったらロジックを考えるよりも直接修正した方が労力は少ない。

・目的が画面等の入力データを分割
他の方の回答にもあるように、揺れがあるので複雑なロジックを持ち込むと色々と大変です。
区切りを行うのは入力者の判断に任せるということが許されるなら、単純に空白で区切った入力とするとかシンプルなものにした方が良いかと。
※区切った結果を表示した上での登録にするなどの工夫は余地があるところですが。

投稿2017/08/08 03:20

編集2017/08/08 04:05
sazi

総合スコア25173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

市町村名は、動的なものではなく合併や人口増減などの要因がなければ一般的に不変な情報だと思います
あらゆるパターンに対応する処理を考えるよりは、全国市町村名リストを入手して単純比較によって抽出分割した方が簡単ではないでしょうか?
新しい市町村が誕生してその文字パターンが新しいケースであってもリストの更新だけで対応できますし

投稿2017/08/08 02:54

takito

総合スコア3111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2017/08/08 02:56 編集

それも一理はありますけど、郡名の有無や「茅ケ崎市/茅ヶ崎市」、「須惠町/須恵町」のように表記ゆれする例もあるので、データと完全一致一本槍、でもうまく行かなかったりします。
takito

2017/08/08 03:11

なるほど、確かに・・・。そういうものがどのくらいの量があるか調べたことがないですが、総務省情報では現在市町村数は1,718ということなので何百もあるものでは無さそうです。先の見えるレベルに思うので、調べられる範囲のものはすべてリストに登録するのもよいかなと思います。
退会済みユーザー

退会済みユーザー

2017/08/08 03:15

住所を正規化してやればいいのでは?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問