Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sprawdzanie czy dany link istnieje
Forum PHP.pl > Forum > Przedszkole
kuci
Witajcie generalnie bawie się nad pobieraniem danych ze steam i tak: kiedy wpisze nazwe broni dla przykładu AWP | Asiimov to wyświetli mi obrazek + cene minimalną oraz mediane. Tak tylko że nie każda broń jest, np awp asiimov factory-new nie ma na steam i wtedy chciałbym aby nie wywalało takie błędu:

  1. Warning: file_get_contents(http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name=AWP%20%7C%20Asiimov%20%28Factory%20New%29): failed to open stream: HTTP request failed! HTTP/1.0 500 Internal Server Error in /home/u393920231/public_html/trade/search.php on line 53


tylko np: brak broni.

link: http://m8.esy.es/trade/search.php?aaa=AWP+|+Asiimov

kod php:
  1. foreach($items as $item)
  2. {
  3. $json = json_decode(file_get_contents('http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name='.rawurlencode($item)), true);
  4.  
  5. if($json['success'] == false OR empty($json))
  6. {
  7. printf('<p><strong>%s</strong></p><ul><li>Najniższa cena: --</li><li>Średnia cena: --</li></ul>', $item);
  8. }
  9. else {
  10. // Dopisane
  11. $najm = str_replace("--", "00", $json['lowest_price']);
  12. $med = str_replace("--", "00", $json['median_price']);
  13. //$med = $json['median_price'];
  14. // koniec
  15. printf('<p><strong>%s</strong></p><ul><li>Najniższa cena: %s</li><li>Średnia cena: %s</li></ul>', $item, $najm, $med);
  16. }


KsaR
  1. file_get_contents('http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name='.rawurlencode($item));

Zamien na:
  1. $content = @file_get_contents('http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name='.rawurlencode($item));
  2.  
  3. if ($content === false)
  4. {
  5. # broń nie istnieje.
  6. }
  7. else
  8. {
  9. # dekodujemy JSON z $content itp.
  10. }
Pyton_000
Żadne @....

  1. 'http' => array('ignore_errors' => true),
  2. ));
  3.  
  4. $result = file_get_contents('http://your/url', false, $context);
KsaR
Cytat(Pyton_000 @ 22.02.2016, 22:19:53 ) *
Żadne @....

  1. 'http' => array('ignore_errors' => true),
  2. ));
  3.  
  4. $result = file_get_contents('http://your/url', false, $context);

+1
___
Myślałem że to jedyne miejsce gdzie wgl operator @ może być potrzebny,
Jak widać... Nawet to da się obejść biggrin.gif, ciekawe czy go skasują np. W PHP8.
kuci
Cytat(KsaR @ 22.02.2016, 22:09:51 ) *
  1. file_get_contents('http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name='.rawurlencode($item));[/php]
  2. Zamien na:
  3. [php]$content = @file_get_contents('http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name='.rawurlencode($item));
  4.  
  5. if ($content === false)
  6. {
  7. # broń nie istnieje.
  8. }
  9. else
  10. {
  11. # dekodujemy JSON z $content itp.
  12. }


jak zrobie tak:
  1. foreach($items as $item)
  2. {
  3. $json = json_decode($content = @file_get_contents('http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name='.rawurlencode($item));
  4.  
  5. if ($content === false)
  6. {
  7. # broń nie istnieje.
  8. }
  9. else
  10. {
  11. # dekodujemy JSON z $content itp.
  12. }
  13.  
  14. if($json['success'] == false OR empty($json))
  15. {
  16. printf('<p><strong>%s</strong></p><ul><li>Najniższa cena: --</li><li>Średnia cena: --</li></ul>', $item);
  17. }
  18. else {
  19. // Dopisane
  20. $najm = str_replace("--", "00", $json['lowest_price']);
  21. $med = str_replace("--", "00", $json['median_price']);
  22. //$med = $json['median_price'];
  23. // koniec
  24. printf('<p><strong>%s</strong></p><ul><li>Najniższa cena: %s</li><li>Średnia cena: %s</li></ul>', $item, $najm, $med);
  25. }
  26.  
  27. }

to wywala
Parse error: syntax error, unexpected ';' in C:\xampp\htdocs\new\search.php on line 34

a 34 linia to ta:
  1. $json = json_decode($content = @file_get_contents('http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name='.rawurlencode($item));


i jak usune ; to wywala cos takiego:
  1. Parse error: syntax error, unexpected 'if' (T_IF) in C:\xampp\htdocs\new\search.php on line 36
KsaR
O 1 ")" za malo...
Jednak najlepiej jakbys przystosowal sie pod post Pyton_000.
I wedlug tego pierw sprawdzic czy istnieje jesli nie to blad, a jesli istnieje dopiero dekodowac.
kuci
  1. $json = json_decode(@file_get_contents('http://steamcommunity.com/market/priceoverview/?currency=3&appid=730&market_hash_name='.rawurlencode($item)), true);


tak zrobiłem i śmiga zabrakło @. dzięki za odpowiedzi hej.
Pyton_000
@ to nie rozwiązanie. Stosuje się to baaaardzo rzadko gdy nie ma innego rozwiązania. Ale w 99% przypadków da się napisać bez tego.

To że po użyciu @ nie wyświetla błędów to nie oznacza że one nie występują.
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.