Hej!
Jo jag undrar om det är någon som sitter på en lösning till formatering av telefonnummer inkl mobilnummer tex
085525252 -> 08 - 552 52 52
092012345 -> 0920 - 123 45
0701234563 -> 070 - 123 45 63
lite exempel på hur jag skulle vilja ha det, någon?
Ska du ha det till alla nummer i Sverige? ;) annars kan du nog fixa det rätt lätt med RegExp.
Exempel på 08 nummret:
^(08)(\d{3})(\d{2})(\d{2})$
vet inte hur php använder med replace men:
$1 - $2 $3 $4
Det bästa hade varit för alla telefonummer i sverige för framtida bruk på sidor osv som kräver det men just för mobilnummer som 073 och 070 samt 08 nummer räcker idag
johnkallioniemi skrev:
Det bästa hade varit för alla telefonummer i sverige för framtida bruk på sidor osv som kräver det men just för mobilnummer som 073 och 070 samt 08 nummer räcker idag
Jag ser ingen annan lösning än att du jobbar med if-satser, eftersom vi inte kan lita på att det är samma antal siffror i varje grupp, eller att ett visst antal siffror automatiskt resulterar i en viss gruppering.
strlen('081234567') är 9
strlen('031123456') är också 9
Mobilnummer är väl alltid tiosiffriga, så det kan nog vara en indikator, men vill du bygga vidare på din lösning i framtiden är det nog bättre att helt enkelt kolla vad som är de inledande siffrorna. Jag skissar på en sådan större lösning.
if ( substr($number,0,2) == '08' ) {
// 08 -nummer kan ha 7 eller 6 siffror väl?
if ( strlen($number) == 7 ) {
// Gruppera 3 - 2 - 2
} else {
// Gruppera 2 - 2 - 2
}
}
Om din lsöning skall växa så är det nog bättre att gå över till en switch-case konstruktion, så koden fortsätter:
else {
switch ( substr($nummer,0.3) ) {
case '010':
case '011':
case '013'
// Fortsätt med alla tresiffriga riktnummer
// Alltid sex siffror i lokala numret? Jag gissar, så kontrollera!
break;
case '070':
case '073':
// Alltid sju siffror väl i mobilnummer?
default:
// Fyra siffror i riktnumret på resten.
}
Lars Gunther
0920112233 -> 10 siffror men jag ser vad du är ute efter ...blir en fruktansvärd lång lista av cases men antar att det inte finns nått enklare sätt ... får försöka hitta en lista över alla riktnummer och sen bygga det runt många cases och sen spara allt i en separat fil som jag sedan inkluderar i filen som ska kontrolleras
kom just på ett sätt att förenkla lite av kontrollen och det är genom att tvinga användaren att fylla i riktnummer och sen resterande exempelvis
Telefon: <input type="text" name="riktnr" maxlength="4"> <input type="text" name="tlfnr" maxlength="6">
spangoMedlem sedan juni 20008 205 inlägg Kom ihåg bara att alla inte är överens om riktnummer på mobiler. Vissa anser att mobilnummer 0701234567 delas upp 0701 - 23 45 67 snarare än 070 - 123 45 67. De har förstås fel, men de är inte helt få ;) och de kommer förstås också skriva in sina nummer fel i dina två rutor.
pebiMedlem sedan jan. 2005327 inlägg Tyvärr funkar ju det inte helt 100% ens med att dela upp i riktummerfält och abonentnummerfält.
Det funkar väl strålande för "landlines", men för mobiler.....
Är riktnumret 070, eller 0708 t.ex.
En fråga om tycke och smak då det egentligen inte finns riktnummer för mobiler.
En tanke bara,
/pebi
red: aj sen som vanligt. Ja ja.
vad annat folk är överrens om är ju en sak men om jag tvingar dom att skriva på ett visst sätt så har dom ju inget val än att följa mitt formulär och då får jag ju min vilja igenom, smidigt sätt för att formatera innan det skjuts in i databasen, sen kan jag ju använda en Case sats för att få det precis som jag vill ha det dvs 08- el 031- el 0920-
johnkallioniemi skrev:
vad annat folk är överrens om är ju en sak men om jag tvingar dom att skriva på ett visst sätt så har dom ju inget val än att följa mitt formulär och då får jag ju min vilja igenom, smidigt sätt för att formatera innan det skjuts in i databasen, sen kan jag ju använda en Case sats för att få det precis som jag vill ha det dvs 08- el 031- el 0920-
Gäller din fråga indatakontroll? Jag trodde det handlade om formattering när det skall visas på sidan, enligt första inlägget.
Kom ihåg att samtliga kontroller som görs på klienten kan åsidosättas och att du ändå behöver göra en kontroll med PHP.
Lars Gunther
Nej formateringen sker i 2 steg
1. Vid input till tabellen
2. Vid query från tabellen så att jag kan vara säker på att telefonnummrena visas enligt önskemål
stattinMedlem sedan jan. 2005713 inlägg
itpastorn skrev:
Jag ser ingen annan lösning än att du jobbar med if-satser, eftersom vi inte kan lita på att det är samma antal siffror i varje grupp, eller att ett visst antal siffror automatiskt resulterar i en viss gruppering.
strlen('081234567') är 9
strlen('031123456') är också 9
Mobilnummer är väl alltid tiosiffriga, så det kan nog vara en indikator, men vill du bygga vidare på din lösning i framtiden är det nog bättre att helt enkelt kolla vad som är de inledande siffrorna. Jag skissar på en sådan större lösning.
if ( substr($number,0,2) == '08' ) {
// 08 -nummer kan ha 7 eller 6 siffror väl?
if ( strlen($number) == 7 ) {
// Gruppera 3 - 2 - 2
} else {
// Gruppera 2 - 2 - 2
}
}
Om din lsöning skall växa så är det nog bättre att gå över till en switch-case konstruktion, så koden fortsätter:
else {
switch ( substr($nummer,0.3) ) {
case '010':
case '011':
case '013'
// Fortsätt med alla tresiffriga riktnummer
// Alltid sex siffror i lokala numret? Jag gissar, så kontrollera!
break;
case '070':
case '073':
// Alltid sju siffror väl i mobilnummer?
default:
// Fyra siffror i riktnumret på resten.
}
Lars Gunther
finns 5 siffriga nummer också
5 siffriga? inte till privatpersoner i alla fall, måste vara nått betalnummer av nått slag du tänker på eller?
stattinMedlem sedan jan. 2005713 inlägg jo jag har 5 siffrigt.. inte riktnumer om det är det du tänker på.
TroxyMedlem sedan mars 20041 505 inlägg På exempelvis Gotland har man femsiffriga telefonnummer, utan riktnummer då förstås.
stattinMedlem sedan jan. 2005713 inlägg jag blir tokig.. numer eller nummer? borde ju vara nummer.. jaja offtopic jag vet.
I stockholm finns upp till 8-siffriga vet jag, då säget de flesta 08 - 5000 1234.
jag vet här i lule så finns det 0920-12345 el 0920-112233 .... ajja har gjort formuläret nu och ser att alla som har fyllt i det nu har fattat vinken i hur man fyller i riktnr samt telefonummer så jag har fått min formatering mer el mindre som jag vill ha den, sen om man vill vara extra petig och ha den som jag sagt tidigare det är ju en annan sak dvs 08-550 203 22 istället för 08-55020322 ... tror jag nöjer mig med en enklare form av formatering då sidan jag gjort bara ger mig ett par fjuttiga kronor