Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pobieranie danych z innej strony/pliku
Forum PHP.pl > Forum > Przedszkole
Tidude
Chciałbym pobrać dane z tego linku: http://worldoftanks.eu/uc/accounts/5023279...WoT_Mobile-site

Dane którę chcę pobrać dotyczą pojazdów gracza. Zaczynają się od
  1. "vehicles": [
, pokażę na przykładzie jak chcę je pobrać.

  1. {
  2. "spotted": 0,
  3. "localized_name": "IS-8",
  4. "name": "IS8",
  5. "level": 9,
  6. "damageDealt": 0,
  7. "survivedBattles": 0,
  8. "battle_count": 478,
  9. "nation": "ussr",
  10. "image_url": "/static/2.1.3/encyclopedia/tankopedia/vehicle/small/ussr-is8.png",
  11. "frags": 0,
  12. "win_count": 222,
  13. "class": "heavyTank"
  14. },
  15. {
  16. "spotted": 0,
  17. "localized_name": "T34",
  18. "name": "T34_hvy",
  19. "level": 8,
  20. "damageDealt": 0,
  21. "survivedBattles": 0,
  22. "battle_count": 412,
  23. "nation": "usa",
  24. "image_url": "/static/2.1.3/encyclopedia/tankopedia/vehicle/small/usa-t34_hvy.png",
  25. "frags": 0,
  26. "win_count": 197,
  27. "class": "heavyTank"
  28. },


Ten kod dotyczy dwóch czołgów IS8 i T34, chciałbym otrzymać taką treść zwrotną

IS-8 9 478 ussr link_brazka 222
T34 8 412 usa link_brazka 197

Chciałbym, żeby pobierało mi dane wszystkich czołgów, bo póki co korzystając z preg_match otrzymywałem informacje o jednym czołgu. A takich danych nie mogłem wykorzystać w tabelce.

Ma ktoś pomysł jak to zrobić? Nie liczę na gotowca, lecz chciałbym żeby mi ktoś podpowiedział jak to zrobić.
Tajgeer
Podane dane udostępniane są w formacie JSON.

Skorzystaj z funkcji json_decode i wyciągnij potrzebne dane.
Tidude
Przeglądałem manual dotyczący json_decode i nie wiem jak to ugryźć. Poszukam jakiegoś przykładu dotyczącego wyciągania danych. Jakbyś wiedział jak to zrobić, to prosiłbym o jakiś przykład.
Tajgeer
  1. <?php
  2. $file = file_get_contents('http://worldoftanks.eu/uc/accounts/502327902/api/1.9/?source_token=Intellect_Soft-WoT_Mobile-site');
  3. $json = json_decode($file, true);
  4. print_r($json);
  5. ?>
Tidude
Ja próbowałem z czymś takim:
  1. <?php
  2. $json_url = "http://worldoftanks.eu/uc/accounts/502327902/api/1.9/?source_token=Intellect_Soft-WoT_Mobile-site";
  3. $json = file_get_contents($json_url);
  4. $json=str_replace('},
  5.  
  6. ]',"}
  7.  
  8. ]",$json);
  9. $data = json_decode($json);
  10.  
  11. echo "<pre>";
  12. print_r($data);
  13. echo "</pre>";
  14. ?>



Wyświetla mi wszystkie dane z adresu. Ale nie wiem jak wybrać tylko te linijki, odnośnie czołgów.
Twoj kod, wyświela wszystko jako [array], jak to dalej eksportować do samych czołgów?

Chodzi mi o to, żeby wyciągnęło te dane dla wszystkich czołgów:
  1. name
  2. level
  3. battle_count
  4. nation
  5. image_url
  6. win_count
  7. class

Michasko
To jest tablica asocjacyjna. Tutaj masz wszystkie pojazdy danego gracza:
  1. $czolgi = $json['data']['vehicles'];
Poczytaj o tablicach asocjacyjnych, aby wiedzieć co z tym dalej zrobić smile.gif
_Borys_
  1. <?php
  2.  
  3. $json_url = "http://worldoftanks.eu/uc/accounts/502327902/api/1.9/?source_token=Intellect_Soft-WoT_Mobile-site";
  4. $json = file_get_contents($json_url);
  5. $data = json_decode($json);
  6. $vehicles = $data->data->vehicles;
  7. $dane = array(
  8. 'localized_name',
  9. 'level',
  10. 'battle_count',
  11. 'nation',
  12. 'image_url',
  13. 'win_count');
  14. for ($i = 0; $i < count($vehicles); $i++)
  15. {
  16. foreach ($dane as $opis)
  17. {
  18. echo $vehicles[$i]->$opis . ' ';
  19. }
  20. echo '<br />';
  21. }
  22.  
  23. ?>
Tidude
Borys dziękuję Ci za pomoc! Właśnie o to mi chodziło i wiem, że bym sobie z tym nie poradził.

Wiesz może jak zrobić, żebym mógł je wyedytować? Chodzi mi o to że chciałbym np. żeby link obrazka był jako <img src="link>
Chcę te dane wstawić w tabelę i żeby te dane były w oddzielnych <td></td>

Próbowałem z $vehicles['localized_name'] ale to nie działa.
Niktoś
Tak na szybkiego nie wiem czy dobrze:
  1. for ($i = 0; $i < count($vehicles); $i++)
  2. {
  3. foreach ($dane as $opis)
  4. {
  5. if ( filter_var ( $opis , FILTER_VALIDATE_URL ) === FALSE ) {
  6. echo $vehicles[$i]->$opis . ' ';
  7. }
  8. else
  9. {
  10. echo $vehicles[$i]->'<img src="'.$opis. '"/>';
  11. }
  12. }
  13. echo '<br />';
  14. }
Tidude
Zrobiłem to trochę inaczej, ale dziękuję za odpowiedź!
Wszystko działa, za co jeszcze raz dziękuję! smile.gif
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-2024 Invision Power Services, Inc.