Web projelerinde telefon numarası almak kolay görünse de veriler kullanılmaya başlandığında farklı yazım biçimleri sorun oluşturabiliyor.
Aynı telefon numarası kullanıcı tarafından farklı şekillerde girilebilir:
0555 000 00 00
5550000000
+90 555 000 00 00
0090 555 000 00 00
(0555) 000 00 00
0555-000-00-00
CRM sistemleri, randevu yazılımları, WhatsApp entegrasyonları, e-ticaret projeleri ve müşteri veritabanlarında bu verilerin tutarlı biçimde saklanması gerekir.
Bu ihtiyaca yönelik olarak geliştirdiğimiz TR Phone paketini açık kaynak olarak yayımladık.
TR Phone, PHP projelerinde Türkiye telefon numaralarının doğrulanması, normalleştirilmesi ve standart formatlara dönüştürülmesi için geliştirilmiş, framework bağımsız bir PHP paketidir.
Paket farklı biçimlerde girilen Türkiye telefon numaralarını ayrıştırarak standart bir yapıya dönüştürür.
Örneğin:
use Kariha\TrPhone\PhoneNumber;
$phone = PhoneNumber::parse('0555 000 00 00');
echo $phone->e164();
// +905550000000
echo $phone->national();
// 0555 000 00 00
echo $phone->international();
// +90 555 000 00 00
echo $phone->digits();
// 5550000000
Böylece kullanıcı telefon numarasını hangi yaygın biçimde girerse girsin uygulama tarafında tutarlı bir veri elde edilebilir.
TR Phone temel olarak şu özellikleri sunar:
TR Phone tamamen PHP içerisinde çalışır.
Telefon numarası herhangi bir API'ye gönderilmez, harici bir servisten doğrulama yapılmaz ve paket bir veritabanına ihtiyaç duymaz.
Bu nedenle form doğrulama, veri temizleme ve normalizasyon işlemleri doğrudan uygulama içerisinde gerçekleştirilebilir.
Paket Packagist üzerinden doğrudan kurulabilir:
composer require kariha/tr-phone
Ardından bir formdan gelen telefon numarası kolayca kontrol edilebilir:
use Kariha\TrPhone\PhoneNumber;
$phone = PhoneNumber::tryParse($input);
if ($phone === null) {
// Geçersiz veya desteklenmeyen telefon numarası
}
Daha basit kullanım için TrPhone sınıfı da kullanılabilir:
use Kariha\TrPhone\TrPhone;
if (TrPhone::validate('+90 532 123 45 67')) {
// Geçerli Türkiye telefon numarası
}
$normalized = TrPhone::normalize('0532 123 45 67');
// 5321234567
Türkiye'de mobil numara taşınabilirliği bulunduğu için bir telefon numarasının prefix'i güncel operatörü kesin olarak göstermez.
Örneğin 532 prefix'i ilk tahsis bilgisi açısından Turkcell ile ilişkilidir ancak numara daha sonra başka bir operatöre taşınmış olabilir.
Bu nedenle TR Phone operatör bilgisini güncel hat operatörü olarak değil, prefix bazlı tahsis bilgisi olarak sunar.
Paket içerisindeki Türkiye numaralandırma verileri BTK tarafından yayımlanan Genel Numaralandırma Planı ve Ulusal Numaralandırma Planı esas alınarak hazırlanmıştır.
Alan kodları ve desteklenen prefix'ler otomatik testlerle kontrol edilmektedir.
TR Phone yalnızca PHP ve Composer gerektirir.
Laravel, Symfony, WordPress veya herhangi bir framework zorunluluğu bulunmaz. Özel PHP projelerinde ve Composer destekleyen diğer PHP uygulamalarında kullanılabilir.
Paket PHP 8.1, 8.2, 8.3 ve 8.4 sürümlerinde GitHub Actions üzerinden otomatik olarak test edilmektedir.
Kod kalitesi için PHPUnit, PHPStan ve PHP CS Fixer kontrolleri de geliştirme sürecine dahil edilmiştir.
TR Phone, MIT lisansı ile açık kaynak olarak yayımlanmıştır.
Kaynak kodunu inceleyebilir, kendi projelerinizde kullanabilir, hata bildirimi veya geliştirme önerisi gönderebilirsiniz.
GitHub:
https://github.com/kariha-dev/tr-phone
Packagist:
https://packagist.org/packages/kariha/tr-phone
TR Phone'u kendi projelerimizde karşılaştığımız gerçek bir veri standardizasyonu ihtiyacından yola çıkarak geliştirdik. Türkiye numaralandırma planındaki değişikliklere göre paketi güncel tutmayı planlıyoruz.