Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Przekształcenie stringu
.Wojtek
post
Post #1





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 22.09.2009

Ostrzeżenie: (0%)
-----


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!!!

Ten post edytował .Wojtek 19.10.2010, 23:38:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
sadistic_son
post
Post #2





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
.Wojtek
post
Post #3





Grupa: Zarejestrowani
Postów: 43
Pomógł: 0
Dołączył: 22.09.2009

Ostrzeżenie: (0%)
-----


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}

Ten post edytował .Wojtek 19.10.2010, 23:59:21
Go to the top of the page
+Quote Post
sadistic_son
post
Post #4





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Użyj wyrażeń regularnych.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 17:17