Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Optymalizacja wyciągania ciągu z ciągu url
Forum PHP.pl > Forum > PHP
TheBlackJJoker
Cześć. Aktualnie robię stronkę, która pobiera dane z API w formie JSON'a.
Użytkownik podaje swój nick, lub link do swojego profilu, który może być w dwóch formach, tj. http://steamcommunity.com/id/<nick lub id>/ i http://steamcommunity.com/profiles/<nick lub id>/ .
Jeżeli podaje nick, to kod leci dalej bez zmian. Jeżeli wykryje, że ciąg znaków składa się z url to wtedy ma wyjąć nick lub id profilu.
Kod działa, ale czasem lubi świrować, tj. api zwraca kod 400 (bad request), a gdy nick się nie zgadza powinien zwracać kod 404. Więc wydaje mi się, że coś tutaj jest źle.
Proszę o pomoc, może ogarnięcie tego od nowa.

Pozdrawiam.



  1. if(isset($_GET['n']) && isset($_GET['p'])){
  2. if($_GET['p'] == 1){
  3. if(strpos($_GET['n'], "steamcommunity.com/id/") === false){
  4.  
  5. }
  6. else{
  7. $b = str_replace("/", "", $_GET['n']);
  8. $c = explode("steamcommunity.comid",$b);
  9. return header("Location: player.php?n=".$c[1]."&p=".$_GET['p']);
  10.  
  11. }
  12.  
  13. if(strpos($_GET['n'], "steamcommunity.com/profiles/") === false){
  14.  
  15. }
  16. else{
  17. $e = str_replace("/", "", $_GET['n']);
  18. $f = explode("steamcommunity.comprofiles",$e);
  19. return header("Location: player.php?n=".$f[1]."&p=".$_GET['p']);
  20.  
  21. }
  22. }
  23. }
Tomplus
A nie możesz użyć wyrażeń regularnych?

Np.
  1. $url = 'http://steamcommunity.com/profiles/76561198121038823/';
  2. preg_match('/\/(id|profiles)\/([\w\d\-\_]+)\//', $url, $wynik);
  3. ID z `{$wynik[1]}` to: {$wynik[2]}
  4. ";


Potem taki wynik przetwarzasz jak chcesz. Z tego co sprawdziłem, to są dwa rodzaje URLi do profilu:

- /id/ gdzie jest numer lub nazwa
- /profiles/ gdzie jest tylko numer ID użytkownika

TheBlackJJoker
Dzięki za pomoc. Usprawniłem to co napisałeś. Zrobione. Dzięki.

  1. if(strstr($_GET['n'], "steamcommunity.com")!==False){
  2. $wynik = preg_split("/(id|profiles)/", $_GET['n']);
  3. $wynik[1] = str_replace("/", "", $wynik[1]);
  4. }
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.