Citat:
Ursprungligen postat av
Caffo
Jag behöver förvandla en sträng till en däckdimension. Min kod undertill fungerar som den ska, men det känns som det måste finnas ett "snyggare/bättre" sätt att gå tillväga?
Det är absolut inget fel på ditt sätt för en så liten uppgift.
Personligen tycker jag det blir renare och enklare att läsa med hjälp av foreach istället för en for-loop.
substr_replace passar bra för att sätta in tecken vid specifika platser så slipper du konkatenera strängelement och ha dig, förutom vid avslutande <br> (skriver du XHTML? <br> som gäller igen annars...)
Kod:
$dim = array('1956515', '2055516', '2254517', '2354018');
foreach($dim as $daeck) {
echo substr_replace(substr_replace($daeck, '-', 5, 0), '/', 3, 0) . "<br>";
}
För ditt exempel med telefonnummer hade jag skippat att sätta in bindestreck; problemet är att olika prefix har olika längd och betydelse. Gamla Stockholm (08) är bara två tecken medan resten av Sverige är tre eller fyra tecken, så du får matcha beroende på fall. Förr i tiden var mobilnummerprefixen fyra siffror men de är nu tre, och i både fasta och mobila nummer kan man flytta nummer mellan olika operatörer och städer så behovet av prefix-åtskillnad är i princip borta, annat än kanske för att avgöra var ett telefonnummer 'förmodligen' hör hemma geografiskt eller att det är ett mobilnummer.
...och medan jag har ännu att stöta på det ska man inte utgå från att andra programvaror gillar ett telefonnummer som innehåller bindestreck/icke-siffror. Själv tar jag bort eventuella mellanslag, bindestreck och inledande nollor och sätter dit landsprefix om numret antas användas internationellt eller behåller telefonnumrets inledande nolla om det är svenska uppgifter. På så sätt ser ditt data konsekvent likadant ut där du sparar det och när du visar det.