quangtam/vietnam-address-converter
Composer 安装命令:
composer require quangtam/vietnam-address-converter
包简介
A PHP library to convert and standardize Vietnamese addresses, provinces, districts, and wards with mapping capabilities
README 文档
README
Thư viện PHP để tự động chuyển đổi địa chỉ hành chính Việt Nam từ cũ sang mới theo Nghị quyết số 202/2025/QH15 của Quốc hội.
🌐 Multi-Language Support
Vietnam Address Converter hiện có sẵn cho nhiều ngôn ngữ lập trình:
- 🟨 JavaScript/TypeScript: vietnam-address-converter
- 🟦 PHP: vietnam-address-converter-php - Thư viện PHP với API tương tự (repo này)
- 🔴 Python: Coming soon...
- 🟩 Go: Coming soon...
💡 Tất cả implementations đều sử dụng cùng dữ liệu mapping và logic chuyển đổi để đảm bảo tính nhất quán.
✨ Tính năng chính
- 🔄 Chuyển đổi địa chỉ tự động: Chuyển đổi địa chỉ cũ sang địa chỉ mới theo quy định mới nhất
- 📊 Dữ liệu mapping thực tế: Sử dụng dữ liệu mapping chính thức từ cơ sở dữ liệu hành chính
- 🎯 Cấu trúc hành chính mới: Loại bỏ cấp quận/huyện theo Nghị quyết 202/2025/QH15
- 🔍 Tìm kiếm thông minh: Tìm kiếm và mapping địa chỉ với độ chính xác cao
- ⚡ Hiệu suất cao: Xử lý nhanh với caching tối ưu
- 📱 Dễ sử dụng: API đơn giản và dễ tích hợp
📈 Thay đổi quan trọng
Loại bỏ cấp Quận/Huyện
Theo Nghị quyết 202/2025/QH15, cấu trúc hành chính mới không còn cấp quận/huyện:
Trước (3 cấp):
Tỉnh/Thành phố → Quận/Huyện → Phường/Xã
Sau (2 cấp):
Tỉnh/Thành phố → Phường/Xã
Ví dụ chuyển đổi:
Input:
Phường 12, Quận Gò Vấp, Thành phố Hồ Chí Minh
Output:
Phường An Hội Tây, Thành phố Hồ Chí Minh // Không còn "Quận Gò Vấp"
🚀 Cài đặt
Yêu cầu hệ thống
- PHP >= 8.0
- Extension: json
Cài đặt qua Composer
composer require quangtam/vietnam-address-converter
Database sẽ được tự động tải từ package quangtam/vietnam-address-database
Cài đặt thủ công
- Clone repository:
git clone https://github.com/quangtam/vietnam-address-converter-php
cd vietnam-address-converter-php
- Cài đặt dependencies:
composer install
🔧 Sử dụng cơ bản
1. Khởi tạo Converter
<?php require_once 'vendor/autoload.php'; use Vietnam\AddressConverter\VietnamAddressConverter; // Khởi tạo converter $converter = new VietnamAddressConverter(); // Tải dữ liệu từ vietnam-address-database package $converter->initialize();
2. Chuyển đổi địa chỉ từ string
// Chuyển đổi địa chỉ từ string $result = $converter->convertAddress('Phường 12, Quận Gò Vấp, Thành phố Hồ Chí Minh'); if ($result->isSuccess()) { $converted = $result->getConvertedAddress(); $mapping = $result->getMappingInfo(); echo "Địa chỉ cũ: " . $result->getOriginalAddress()->getFormattedAddress() . "\n"; echo "Địa chỉ mới: " . $converted->getFormattedAddress() . "\n"; echo "Loại chuyển đổi: " . $mapping->getMappingType() . "\n"; } else { echo "Lỗi: " . $result->getMessage() . "\n"; }
3. Chuyển đổi từ object
use Vietnam\AddressConverter\Models\FullAddress; // Địa chỉ cũ (có Quận/Huyện) $addressObject = new FullAddress( 'Phường 12', // ward 'Quận Gò Vấp', // district 'Thành phố Hồ Chí Minh', // province '123 Nguyễn Văn Cừ' // street ); $result = $converter->convertAddress($addressObject); if ($result->isSuccess()) { $converted = $result->getConvertedAddress(); // Kết quả: Phường An Hội Tây, Thành phố Hồ Chí Minh (không có district) }
4. Xuất kết quả dưới dạng JSON
$result = $converter->convertAddress('Phường 12, Quận Gò Vấp, TP.HCM'); // Xuất JSON echo $result->toJson(); // Xuất array $array = $result->toArray(); print_r($array);
🔄 Các loại chuyển đổi
1. Merged (Gộp)
Nhiều phường/xã cũ được gộp thành một phường/xã mới:
// Phường 12 và Phường 14 → Phường An Hội Tây $converter->convertAddress('Phường 12, Quận Gò Vấp, TP.HCM'); // mappingType: 'merged'
2. Renamed (Đổi tên)
Phường/xã giữ nguyên ranh giới nhưng đổi tên:
$converter->convertAddress('Phường cũ, Quận ABC, Tỉnh XYZ'); // mappingType: 'renamed'
3. Unchanged (Không đổi)
Phường/xã không có thay đổi:
$converter->convertAddress('Phường An Lạc, Quận Bình Tân, TP.HCM'); // mappingType: 'unchanged'
📊 API Reference
VietnamAddressConverter
initialize(): void
Khởi tạo converter với dữ liệu từ Vietnam Address Database package.
convertAddress(string|FullAddress $address): ConversionResult
Chuyển đổi địa chỉ từ định dạng cũ sang mới.
Tham số:
$address: Địa chỉ cần chuyển đổi (string hoặc FullAddress object)
Kết quả trả về:
ConversionResult: Kết quả chuyển đổi
getDataStats(): array
Lấy thống kê dữ liệu.
getProvinces(): array
Lấy danh sách tất cả tỉnh/thành phố.
getWardsByProvince(string $provinceCode): array
Lấy danh sách phường/xã theo mã tỉnh.
searchMappings(string $keyword): array
Tìm kiếm mapping theo từ khóa.
Models
ConversionResult
interface ConversionResult { public function isSuccess(): bool; public function getOriginalAddress(): FullAddress; public function getConvertedAddress(): ?NewAddress; public function getMappingInfo(): ?MappingInfo; public function getMessage(): ?string; public function toArray(): array; public function toJson(): string; }
FullAddress (Địa chỉ cũ có district)
interface FullAddress { public function getWard(): string; public function getDistrict(): string; public function getProvince(): string; public function getStreet(): string; public function getFormattedAddress(): string; public function toArray(): array; }
NewAddress (Địa chỉ mới không có district)
interface NewAddress { public function getWard(): string; public function getProvince(): string; public function getStreet(): string; public function getFormattedAddress(): string; public function toArray(): array; }
💻 Ví dụ hoàn chỉnh
<?php require_once 'vendor/autoload.php'; use Vietnam\AddressConverter\VietnamAddressConverter; async function demo() { $converter = new VietnamAddressConverter(); $converter->initialize(); $testAddresses = [ 'Phường 12, Quận Gò Vấp, TP.HCM', 'Phường 14, Quận Gò Vấp, TP.HCM', 'Phường An Lạc, Quận Bình Tân, TP.HCM' ]; foreach ($testAddresses as $address) { $result = $converter->convertAddress($address); if ($result->isSuccess()) { $converted = $result->getConvertedAddress(); $mapping = $result->getMappingInfo(); echo "Input: {$address}\n"; echo "Output: {$converted->getFormattedAddress()}\n"; echo "Type: {$mapping->getMappingType()}\n\n"; } else { echo "Error: {$result->getMessage()}\n\n"; } } } demo();
📊 Dữ liệu
Thư viện sử dụng package quangtam/vietnam-address-database bao gồm:
- 34 tỉnh/thành phố theo cấu trúc hành chính mới
- 3,321 phường/xã đã được cập nhật
- 10,977 mapping records cho việc chuyển đổi
Dữ liệu được cập nhật theo Nghị quyết số 202/2025/QH15 của Quốc hội về việc sắp xếp đơn vị hành chính và tự động đồng bộ từ database package.
🛠️ Phát triển
Chạy tests
composer test
Kiểm tra code style
composer cs-check
Sửa code style
composer cs-fix
Chạy ví dụ
php examples/basic_usage.php
🤝 Đóng góp
Chúng tôi hoan nghênh mọi đóng góp! Vui lòng:
- Fork dự án
- Tạo feature branch (
git checkout -b feature/amazing-feature) - Commit thay đổi (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Mở Pull Request
📄 License
📞 Liên hệ
- Issues: GitHub Issues
- Email: quangtamvu@gmail.com
🙏 Cảm ơn
- Dữ liệu từ thanhtrungit97/dvhcvn
- Nghị quyết số 202/2025/QH15 của Quốc hội
- Tham khảo từ quangtam/vietnam-address-converter
Made with ❤️ for Vietnam developers
quangtam/vietnam-address-converter 适用场景与选型建议
quangtam/vietnam-address-converter 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 23 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 07 月 12 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「address」 「mapping」 「converter」 「vietnam」 「provinces」 「districts」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 quangtam/vietnam-address-converter 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 quangtam/vietnam-address-converter 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 quangtam/vietnam-address-converter 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Maps in minutes. Powered by the Google Maps API.
Redirects TYPO3 visitors automatic or with a suggestlink to another language and/or root page.
Tools to convert between .NET and PHP date formats
Module adding custom shipping attribute for what3words address
Forms mapping of Doctrine ORM entities for Nette Framework
Encode integer IDs using a preset or customized symbol set
统计信息
- 总下载量: 23
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 30
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-07-12