Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Rozbicie stringu do tablicy ze zmiennym separatorem
Forum PHP.pl > Forum > Przedszkole
qwerty111
Witam.

  1. $string = 'a34b54e67';


Jak rozbić taki ciąg do tablicy asocjacyjnej, aby indeksem elementu tablicy była litera a wartością występująca po niej wartość liczbowa.
Innym słowem, jakiej funkcji "rozbijającej" użyć, aby jej separatorem była zmienna wartość tekstowa i stawała się ona indeksem elementu tablicy z wartością liczbową występującą po nim.

Będę wdzięczny za ew. podpowiedzi, lub jakieś ciekawe rozwiązanie :-)
qrzysztof
Liczby zawsze dwucyfrowe? Czy mogą być 1 cyfrowe, 3 lub więcej cyfrowe? Jakieś inne nieregularności możliwe?
erix
preg_split?
thek
Nie sądzę, by można było zrobić to jedną funkcją.Na chwilę obecną mam kilka pomysłów. Jeden to przelecieć wyrażeniem regularnym string i zrobić 2 tablice. Jeden z liczbami, a drugi literami. Potem array_combine. Ewentualnie kombinować z preg_split() z ustawioną flagą PREG_SPLIT_DELIM_CAPTURE co da nam tablicę tablic w postaci:
array( [0] => array( [0] => znaki, [1] => liczba), [1] => array( [0] => znaki, [1] => liczba) ...)
i z tego potem w foreach zrobić tablicę.
Ale to pewnie nie jedyne sposoby winksmiley.jpg
qwerty111
Rozwiązałem problem. Może komuś się przyda moje rozwiązanie.

  1. # Ciąg do analizy
  2. $data = 'f3453d23ddd773';
  3. # Stworzenie tablicy "kawałków" stringu
  4. preg_match_all("#([a-z]+)([0-9]+)#si", $data, $result);
  5. # Utworzenie tablicy, w której indeksiem elementu będzie cześc literowa, a wartością część liczbowa występująca zaraz po części literowej
  6. for($i=0; $i <count($result[0]); $i++){
  7. $array[$result[1][$i]] = $result[2][$i];
  8. }


A tak wygląda stworzona tablica.

  1. Array
  2. (
  3. [f] => 3453
  4. [d] => 23
  5. [ddd] => 773
  6. )


Dziękuję za wszystkie podpowiedzi :-)
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.