Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Przekształcenie stringu
Forum PHP.pl > Forum > Przedszkole
.Wojtek
Witam

Potrzebuję przekształcić taki string:
Kod
|51.8782,15.4692|51.8783,15.4688|51.8783,15.4683

w takie coś:
Kod
15.4692, 51.8782, 10
15.4688, 51.8783,10
15.4683, 51.8783, 10

Chyba, gdybym zobaczył jak wczytać te dane do tablicy, to z resztą dałbym sobie radę.

Pewnie mam użyć f-cji explode ale jak wczytać kolumny z takiego ciągu znaków?

Poradziłem sobie!!!
sadistic_son
Dokładnie tak, musisz użyć explode.Najpierw dzielisz caly string na kawalki w miejscach |. Potem kazdy element tablicy (powstalej z podzielonego stringu) dzielisz w petli foreach po przecinku i tak powstale tablice porzadkujesz sobie jak chcesz.
.Wojtek
Dzięki, działa ale niestety skomplikowałem sobie sprawę. W zasadzie okazuje się, że chcę odczytać takie coś:


Kod
        {
            "RoutePointId":0,
            "RoutePartId":0,
            "Time":"00:00:00",
            "Speed":3,
            "Lat":51.8593,
            "Lon":15.4552,
            "Alt":122,
            "TimeLabel":"00:00:00",
            "Dist":"0,00",
            "showPauseMarker":false,
            "AverageLabel":"0:00"
        },
        {
            "RoutePointId":0,
            "RoutePartId":0,
            "Time":"00:00:15",
            "Speed":7.5,
            "Lat":51.8592,
            "Lon":15.4552,
            "Alt":121,
            "TimeLabel":"00:00:15",
            "Dist":"0,01",
            "showPauseMarker":false,
            "AverageLabel":"10:00"
        },


i wyciągnąć z tego:

51.8593, 15.4552,
51.8592, 15.4552,

Co zaproponujecie? Pewnie coś podobnego trzeba zrobić. Na razie mam takie coś (do poprzedniego problemu ze stringiem bez /n)

  1. function multiexplode ($delimiters,$string) {
  2. $ary = explode($delimiters[0],$string);
  3. array_shift($delimiters);
  4. if($delimiters != NULL) {
  5. foreach($ary as $key => $val) {
  6. $ary[$key] = multiexplode($delimiters, $val);
  7. }
  8. }
  9. return $ary;
  10. }
  11.  
  12. $string = "|51.8782,15.4692|51.8783,15.4688|51.8783,15.4683";
  13.  
  14. $delimiters = Array("|",",");
  15.  
  16. $res = multiexplode($delimiters,$string);
  17. $ilosc_wierszy_tablicy = count($res);
  18.  
  19. $i = 0;
  20. while ($i < $ilosc_wierszy_tablicy) {
  21. $i++;
  22. if ($res[$i][1] != '' and $res[$i][0] != '') {
  23. echo $res[$i][1].', '.$res[$i][0].', 10<br/>';
  24. }
  25. }

Pewnie przyda się coś co by dopuszczało tylko określone ciągi znaków do rozpatrzenia.

EDIT: Jak zrobić coś takiego, aby przefiltrować string i dopuścić tylko określone ciągi znaków, np.

Lat&quot;:{liczba}, oraz Lon&quot;:{liczba}
sadistic_son
Użyj wyrażeń regularnych.
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.