PHP向け住所解析ツールの開発と利用ガイド

Webアプリケーションの開発において、ユーザーが入力する配送先住所情報はしばしば非構造的な形式で提供されます。例えば次のようなケースです:

李四 13800138000 四川省成都市锦江区人民东路100号 510123198512120012 郵便番号200000

このような文字列から「氏名」「電話番号」「都道府県市区町村」「詳細住所」などの情報を正確に抽出することは、プログラム側にとっては容易ではありません。

この問題を解決するために、私はPHPで実装された住所解析ライブラリを開発しました。これにより、単純なテキスト形式の住所データを自動的に構造化された情報へと変換することが可能になります。

オンラインでの利用

特に技術知識を持たない方でも、以下のデモページを利用して簡単に住所情報を整形できます:

  • 使い方:住所をテキストエリアに貼り付けるだけで、自動的に各項目に分割されます。
フィールド
氏名 李四
携帯電話番号 13800138000
ID番号 510123198512120012
都道府県市区町村 四川省 成都市 锦江区
詳細住所 人民东路100号
郵便番号 200000

システム連携方法(PHP)

Composer経由でパッケージをインストールします:

composer require hejunjie/address-parser

その後、次のようにして使用可能です:

<?php
require_once 'vendor/autoload.php';

use Hejunjie\AddressParser\AddressParser;

$inputText = '王五,电话号码13912345678 身份证号420123199202020012 上海市浦东新区陆家嘴环路88号 邮政编码200120';
$result = AddressParser::parse($inputText);

print_r($result);

出力結果は以下のようになります:

[
    'name'       => '王五',
    'mobile'     => '13912345678',
    'idn'        => '420123199202020012',
    'postcode'   => '200120',
    'province'   => '上海市',
    'city'       => '上海市',
    'area'       => '浦东新区',
    'detail'     => '陆家嘴环路88号'
]

技術的背景

本ライブラリでは以下のような処理フローに基づいています:

  • 電話番号・ID番号・郵便番号の抽出: 正規表現によるパターンマッチングを使用
  • 住所階層の特定: 内蔵された中国行政区域データベースと部分一致アルゴリズムを組み合わせて判定
  • 氏名との判別ロジック: 名前の長さや出現位置に基づいたルールベースのフィルタリング

また、このライブラリは軽量設計であり、LaravelやSymfonyなどのフレームワークに依存せず、データベースも不要です。既存プロジェクトへの導入も容易に行えます。

リポジトリ情報

ソースコードおよび最新バージョンについてはGitHubをご確認ください:zxc7563598/php-address-parser

タグ: PHP address-parsing text-processing composer-package chinese-address

6月6日 19:11 投稿