PHP: Formatera telefonnummer
2013-06-10 - telefonnummer, php
0
Jag hade ett behov av att normalisera telefonnummer i en lista som var ifyllda av användare, så dom såg lite hur som helst ut. Så jag skrev en funktion för att normalisera telefonnummer som ser ut så här:
<?     function phone_number($nr$formats false){         if (!$GLOBALS["areacodes"]){             if (file_exists("$GLOBALS[data_dir]/Atlas/Areacodes/$GLOBALS[language].txt")){                 $GLOBALS["areacodes"] = array_filter(explode("n"file_get_contents("$GLOBALS[data_dir]/Atlas/Areacodes/$GLOBALS[language].txt")));             }         }         if ($formats === true){             $number preg_replace("/[^d+]/"""$nr);             if (preg_match("/^00/"$number)){                 $number preg_replace("/^00/""+"$number);             } elseif (preg_match("/^0[1-9]/"$number)) {                 switch ($GLOBALS["language"]){                     case "se":                         $number "+46" preg_replace("/^0/"""$number);                         break;                 }             }                          return $number;         }         if (!$formats)             $formats = ["### ##""## ## ##""### ## ##""### ### ##"];         if ($GLOBALS["phone_formats"])             $formats explode("n"$GLOBALS["phone_formats"]);         if ($GLOBALS["areacodes"]){             if (preg_match("/^+(d{2})/"$nr$m)){                 $country "+" $m[1];                 if ($m[1] == 46 && $GLOBALS["language"] == "se"){                     $country false;                     $nr preg_replace("/^+46/""0"$nr);                 } else {                     $nr preg_replace("/^+d{2}/"""$nr);                 }             }             $number preg_replace("/[^d+]/"""$nr);             $cd join("|"$GLOBALS["areacodes"]);             if (preg_match("/^($cd)(.*)$/"$number$m)){                 $digits preg_split("//"$m[2], -1PREG_SPLIT_NO_EMPTY);                 $numlen count($digits);                 foreach ($formats as $f){                     $charnum substr_count($f"#");                     if ($charnum == $numlen){                         $lnr 0;                         foreach (preg_split("//"$f, -1PREG_SPLIT_NO_EMPTY) as $c){                             if ($c == "#"){                                 $out[] = $digits[$lnr];                                 $lnr++;                             } else {                                 $out[] = $c;                             }                         }                         if ($out){                             return $country $m[1] . "-" trim(join(""$out));                         }                     }                 }             }         }                  return $country $nr;     } ?>
Så, först så kan man skicka med en array med de format man vill använda, annars så har funktionen en uppsättning med format. Dessa format gäller numret efter riktnumret, så en fil med riktnummer krävs också. Funktionen laddar en fil med det språkval som sidan i fråga har, så man får rätt lands riktnummer. Det är en lista med giltiga riktnummer, en per rad.
Sedan matchar vi numret med ett giltigt riktnummer och om det finns så går vi igenom formaten och ställer upp siffrorna efter hash-tecknena, så "070-123 45 67" + "### ## ##" blir "070-123 45 67", behändigt!
Mer i Tutorials
PHP och BankID
Skapa sn i Photoshop
Modellera URLar
PHP Formatera telefonnummer
Skapa ett Netflixprogram
Expandera korta URLar
Parsea hashtaggar
Nyckelord: telefonnummer eller php
OAuth fungerar inte
Hur nya iPaden stller till det p webben
Layoutmotor fr Atlas
Bygg MySQLqueries automatiskt
Min feed
Rkna tid med PHP
Två månader med Keto
Spelbord v3
Mechanical Age map
More shading and water
Första månaden med Keto
Keto
Fotosession: Tabitha
Utebelysning
Återvinningsskåp
Måla om huset
Byggt hylla till vintunnorna
Dodge RAM
Inline-redigering
Drömmen om ett spa
Dags för carport
Survey Island, what is happening?
Golvprov
Gillestugan uppdaterad!
Spelbord v2
Tre billyhyllor blir två
Gymkort
You can't take the sky from me
Högtalare klara!
eklundh.com tar ned skylten
Högtalare bestämda!
Uppgraderingar biorum
Lord of the Rings-maraton
Ergonomiskt som tusan!
Lego Storm Trooper
Fågel Fenix
Två hyllor på badrummet
Hobbyhörna fixad
Hylla bakom soffan
Modellbygge igen!
Porträtt av u/Flattie-Ratty
Porträtt av u/DangDoood
Buy prints of my maps
Hero Dashboard för Descent
3D-printer
Fältsjukhus 616
Ny kaffemaskin
Porträtt av u/elizabeeeef
Jämförelse 135 mm
Nya objektiv
Porträtt av kompis mamma
Använda utrymmet under trappen
Spelbord
Pimpning av köks-ön
Jag saknar min Dodge!
Acrylic drip