2012-06-28 PHP
Załóżmy, że posiadamy 26 cyfrowy numer polskiego konta bankowego. Jego prezentacja w formie znak po znaku jest dobra do przechowywania jednak przy prezentacji warto sformatować numer separując odpowiednie człony numeru dla lepszego odczytu. Umożliwia to poniższy kod.
Posiadamy numer konta zapisany jako:
11222233334444555566667777
Aby w efekcie końcowym otrzymać:
11 2222 3333 4444 5555 6666 7777
musimy umieścić spację po: 2, 6, 10, 14, 18 i 22 znaku.
Użyjemy do tego celu funkcji substr($string, $start, $length);, której zadaniem jest zwrócić fragment łańcucha znaków. Parametry funkcji to:
Warto zauważyć prostą zależność – pierwszy fragment składa się z dwóch cyfr a każdy kolejny z czterech. Parametry do funkcji można ciekawie przekazać poprzez tablicę gdzie pary "$start / $length" będą odpowiednio kluczami i wartościami tablicy. Zdefiniujmy zatem tablice:
$parts = array(0 => 2, 2 => 4, 6 => 4, 10 => 4, 14 => 4, 18 => 4, 22 => 4);
Aby przejść przez tablicę użyjemy pętli foreach(); w następujący sposób:
foreach ($parts as $key => $val) { $newNumber .= substr($accountNumber, $key, $val).' '; }
W ten sposób nasz numer konta jest dzielony na tyle części ile elementów jest w tablicy $parts czyli 7. Na uwagę zwraca sposób generowania nowego numeru. Do zmiennej $newNumber poprzez konkatenację doklejany jest każdy z 7 fragmentów ze spacją na końcu. W ostatnim kroku pętla doda spację za ostatnim znakiem numeru konta. Pozbędziemy się jej używając funkcji trim();.
Całość funkcji wygląda nastepująco:
function formatAccountNumber($accountNumber) { //po ktorym znaku i ile znakow odseparowac dzieki uzyciu spacji $parts = array(0 => 2, 2 => 4, 6 => 4, 10 => 4, 14 => 4, 18 => 4, 22 => 4); foreach ($parts as $key => $val) { $newNumber .= substr($accountNumber, $key, $val).' '; } return trim($newNumber); }
W efekcie otrzymujemy zapis numeru konta w bardziej przyjaznej formie. Cała porada będzie miała sens jeśli zagwarantujemy, że do funkcji przekazujemy dokładnie 26 cyfr.