Frågeställning:
Hur försäkrar jag mig om att endast telefon inom Sverige kan göras från mitt mobilabonnemang, om jag vill dela med mig av det på internet? Förvisso är frågan är onödig - vem delar med sig av sitt telefonnummer där? Men om vi föreställer oss att det är så.
Koden är perl, och jag lägger den här, som en reminder till mig själv... Ni som känner att lösningen kan göras på något annat sätt kan väl föreslå nåt.
Resultatet visas kursivt.
$mob{1} = "+46-70-2747703";
+46702747703, Svenskt nummer: 0702747703
$mob{2} = "46702747703";
+46702747703, Svenskt nummer: 0702747703
$mob{3} = "+46+070+2747703";
+46702747703, Svenskt nummer: 0702747703
$mob{4} = " 4 6 70 27 4 77 0 3";
+46702747703, Svenskt nummer: 0702747703
$mob{5} = "Ture Sventon har 0702747703";
+46702747703, Svenskt nummer: 0702747703
$mob{6} = "Jag tänkte fuska med ett nordiskt land +470702747703";
+46470702747703, Svenskt nummer: 0470702747703
$mob{7} = "Och igen +47702747703";
+4647702747703, Svenskt nummer: 047702747703
Så, vad vi kan se här, så kommer alla telefonnummer som skrivs in tolkas som svenska telefonnummer. Alla landskoder som inte börjar på 46 kommer översättas till riktnummer inom sverige.
Är detta smidigt, eller osmidigt?
Hur försäkrar jag mig om att endast telefon inom Sverige kan göras från mitt mobilabonnemang, om jag vill dela med mig av det på internet? Förvisso är frågan är onödig - vem delar med sig av sitt telefonnummer där? Men om vi föreställer oss att det är så.
Koden är perl, och jag lägger den här, som en reminder till mig själv... Ni som känner att lösningen kan göras på något annat sätt kan väl föreslå nåt.
PHP Code:
## Rutin för att göra om mobiltelefon-nummer till rena siffersträngar
## och som bara kommer tillåta telefoni inom Sverige
sub transmob;
sub makeswe;
## Teststrängar
$mob{1} = "+46-70-2747703";
$mob{2} = "46702747703";
$mob{3} = "+46+070+2747703";
$mob{4} = " 4 6 70 27 4 77 0 3";
$mob{5} = "Ture Sventon har 0702747703";
$mob{6} = "Jag tänkte fuska med ett nordiskt land +470702747703";
$mob{7} = "Och igen +47702747703";
## Här görs testerna
foreach $mobs (sort keys %mob) {
$newmob = transmob($mob{$mobs});
print "$newmob, Svenskt nummer: " . makeswe($newmob) . "\n";
}
## Rutiner för översättningen av nummer. Allt som körs genom dessa rutiner görs om till
## numeriska siffersträngar
sub transmob {
## Begränsa förfrågningar till max 128 tecken
$phone = substr "@_", 0, 128;
$addnum = "";
## Ta bort allt som inte är siffror, kontrollera tecken för tecken
while ($phone) {
$numeric = substr $phone, 0, 1;
$phone = substr $phone, 1;
## Tillåt bara 0-9
if ($numeric eq "0" || $numeric > 0) {
$addnum = $addnum . $numeric;
}
}
$landskodkontroll = substr $addnum, 0,2;
## Om personen ifråga har lagt upp sitt nummer med "+46" i början, så tar vi bort det...
if ($landskodkontroll == 46) {$addnum = substr $addnum, 2;}
## Om personen påbörjat sitt riktnummer med "0" i början, så tar vi bort det.
$riktnummerkontroll = substr $addnum, 0,1;
if ($riktnummerkontroll == 0) {$addnum = substr $addnum, 1;}
## Efter städningen lägger vi till
$addnum = "+46" . $addnum;
return $addnum;
}
## Rutin för att göra om mobilnumret till ett svenskt nummer
sub makeswe {
## Använd översättningsrutinen för att rensa numret
$phone = transmob("@_");
## Ta bort det rutinen lade till i början
$phone =~ s/^\+46/0/;
return $phone;
}
$mob{1} = "+46-70-2747703";
+46702747703, Svenskt nummer: 0702747703
$mob{2} = "46702747703";
+46702747703, Svenskt nummer: 0702747703
$mob{3} = "+46+070+2747703";
+46702747703, Svenskt nummer: 0702747703
$mob{4} = " 4 6 70 27 4 77 0 3";
+46702747703, Svenskt nummer: 0702747703
$mob{5} = "Ture Sventon har 0702747703";
+46702747703, Svenskt nummer: 0702747703
$mob{6} = "Jag tänkte fuska med ett nordiskt land +470702747703";
+46470702747703, Svenskt nummer: 0470702747703
$mob{7} = "Och igen +47702747703";
+4647702747703, Svenskt nummer: 047702747703
Så, vad vi kan se här, så kommer alla telefonnummer som skrivs in tolkas som svenska telefonnummer. Alla landskoder som inte börjar på 46 kommer översättas till riktnummer inom sverige.
Är detta smidigt, eller osmidigt?

Comment