Biçimlendirme telefon numarası

3 Cevap php

For a decent and standardized php function I want to format a user inputted string to a std. international phone number format. The string will be stripped from other characters as digits and +-signs. All spaces will be deleted. After that I want to format the different strings to a standardized form:

+310612345678  -> +31 (0)61 234 5678
00310612345678  -> +31 (0)61 234 5678

+31612345678   -> +31 (0)61 234 5678 
//add a leading zero between brackets (0))
0031612345678  -> +31 (0)61 234 5678

06 12345678   -> +31 (0)61 234 5678 
//When no country code is given (no 00xx or +xx) than add the dutch one.

Bu i allready sahip fonksiyonudur:

function formatPhoneNumber($num){
 //delete everything except digits and +
  $number = preg_replace('/[^\d|\+]/', '', $number);

 if(substr($number,0,1) == '+' || substr($number, 0,2) == 00){
  //
 }else{
  $number = "+31".$number;
 }

 /////////
 // formatting as mentioned above
 /////////


 return $num
}

Ben bir formata kullanıcı girilen telefon numaraları farklı yolları biçimlendirmek için bir algoritma Arıyorum: +31 (0) 61 2345678

3 Cevap

Ben ülke kodunu önek ötesinde bunun için uluslararası bir standart orada gerçekten emin değilim. Uluslararası telefon numarası biçimlendirme örnekleri için bkz: here. Biçimlendirme ülkeye bağlı olarak değişebilir ve ayrıca türüne bağlı olacaktır.

örneğin İngiltere'de biz sabit hatlar için +44 (0) 20 1234 1234 var, ve cep için +44 (0) 7700 123456.

Düzgün bu yapmak istiyorsanız Sonuç olarak, ben ülke kodunu tespit etmek gerekir, ve sonra bir ülkeye özgü biçimlendiriciden fiş düşünüyorum.

Ben şu an bunun için kesin bir çözüm var ama sadece Hollandalı numaraları analiz etmek istemiyorsanız bazı zorluklar işaret etmek istiyorum:

  • Sen tüm uluslararası önek (bazı Kuzey Amerika one +1 gibi, bazı Hollandalı bir 31 gibi iki haneli ve bazı Çek biri 420 gibi üç haneli olan tek basamaklı olup) ve olmadığını bilmek zorunda var ülke kodu ve basitçe biçiminde alanı için doğru pozisyonu tespit edemez alan kodu arasında boşluk olduğunu.

  • Size daha fazla alan kodu önde gelen sıfır gereksiz olduğunu otomatik olarak kabul edemeyiz. İtalya gibi bazı ülkelerde önde gelen sıfır i, hatta uluslararası aramalar kullanılmalıdır. e. Eğer Hollanda Milan numer 02 123456 aramak isterseniz yerine +39 2 123456 arasında +39 02 123456 aramak zorunda.

Yani, sadece kısa bir biçimlendirme algoritma yazıyorum ama farklı ülkelerde farklı sayı biçimleri ve kullanımları anlamak konusunda çok ilgili değil.

Tabii ki anlatılan biçimine (Ben tam olarak bilmek ve Hollandalı telefon numarası biçimini anlamak varsayıyorum) Hollandalı numaraları dönüştürmek dönüştürmek ve her yabancı dizi hemen her türlü tüm whitespaces kaldırarak ve bir "+" ile bir lider "00" yerine - Eğer hiçbir kirli hızlı-ve-bir çözüm istiyorsanız yapmanız gereken çok iş var.

Bu hollanda cep telefonu numaralarını biçimlendirmek için standart bir yol değildir gibi bu Hollanda'daki (tüm 06 ile başlar), ilginç.

Muhtemelen sadece bu testi odaklı yazmak gerekir. Eğer kapak isteyeceksiniz ilginç durumlarda çok ve en az dönüştürmek değil mi ne yapmak ve ne göstermek mümkün olacağını yol vardır.