Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Dzielenie string na bloki znaków
Forum PHP.pl > Forum > Przedszkole
Cobweb
Witam!

Jako że jest to mój pierwszy post i dopiero zaczynam przygodę z php i mysql to proszę o wyrozumiałość.

Mam w bazie mysql kolumnę, która zawiera numery telefonów w następującej postaci 0445556677, problem polega na tym, aby wyświetlany numer na stronie był w takiej postaci: 044 555 66 77, szukając rozwiązania natknąłem się na funkcję substr i spłodziłem coś takiego:

  1. <?php
  2. $kierunkowy = substr($tel, 0, 3);
  3. $numer1 = substr($tel, 3, 3);
  4. $numer2 = substr($tel, 6, 2);
  5. $numer3 = substr($tel, 8, 2);
  6. $telefon = $kierunkowy . " " .$numer1 . " " . $numer2 . " " . $numer3;
  7. ?>


W zasadzie efekt jest taki jak być powinien, ale kod jest raczej bardzo bardzo ...., czy nie można by wydobyć poszczególnych bloków kodu za jednym wywołaniem? Byłbym wdzięczny za jakieś pomysły ewentualnie, jaką inną funkcją w php lub mysql powinienem się zainteresować?

Z góry dziękuję za pomoc!
qwaq
może ci sie przyda :

jeśli masz string $www="ala ma kota";
to:
$www[0]="a"
$www[1]="l"
$www[2]="a"
$www[3]=" "
$www[4]="m"
$www[5]="a"
$www[6]=""
itd
bmL
Może chodzi ci o coś takiego:
  1. <?php
  2. function podzielnumer($nr)
  3. {
  4. $kierunkowy = substr($nr, 0, 3);
  5. $numer1 = substr($nr, 3, 3);
  6. $numer2 = substr($nr, 6, 2);
  7. $numer3 = substr($nr, 8, 2);
  8. global $telefon;
  9. $telefon = $kierunkowy . " " .$numer1 . " " . $numer2 . " " . $numer3;
  10. }
  11. $tel='0445556677';
  12. podzielnumer($tel);
  13. echo $telefon;
  14. echo '<br>';
  15. podzielnumer('0445556677');
  16. echo $telefon;
  17. echo '<br>';
  18. podzielnumer('1234567890');
  19. echo $telefon;
  20. ///itp...///
  21. ?>

albo jeszcze krócej:
  1. <?php
  2. function podzielnumer($nr)
  3. {
  4. $kierunkowy = substr($nr, 0, 3);
  5. $numer1 = substr($nr, 3, 3);
  6. $numer2 = substr($nr, 6, 2);
  7. $numer3 = substr($nr, 8, 2);
  8. $telefon = $kierunkowy . " " .$numer1 . " " . $numer2 . " " . $numer3;
  9. echo $telefon;
  10. }
  11. $tel='0445556677';
  12. podzielnumer($tel);
  13. echo '<br>';
  14.  
  15. podzielnumer('0445556677');
  16. echo '<br>';
  17.  
  18. podzielnumer('1234567890');
  19. ///itp...///
  20. ?>
JaRoPHP
Ja proponuje tak:
  1. <?php
  2. preg_match('/([0-9]{3})([0-9]{3})([0-9]{2})([0-9]{2})/', $tel, $matches);
  3. $tel = $matches[1] . ' ' . $matches[2] . ' ' . $matches[3] . ' ' . $matches[4];
  4. ?>

~qwaq tego chyba nie czytałeś: (Źródło: pl.php.net):
Cytat
Dostęp do pojedynczego znaku łańcucha jest możliwy po podaniu jego indeksu (ofsetu) w nawiasach klamrowych, zaraz po nazwie zmiennej. Pierwszy znak w łańcuchu ma indeks zero.
Cobweb
Witam!

Dzięki za zainteresowanie i pomoc, chodziło mi o coś takiego jak napisał JaRoPHP.

Pozdrawiam!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.