Jesteś tutaj: Strona główna / Wiedza / PHP / Formatowanie numeru konta bankowego

Formatowanie numeru konta bankowego

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:

  • $string - łańcuch znaków z którego wyciągamy interesujący nas fragment,
  • $start - znak początkowy od którego rozpoczynamy wycinanie,
  • $length - ilość znaków, które chcemy otrzymać.

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.

Do góry

Twój komentarz: