Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Wyciąganie pewnych danych
Forum PHP.pl > Forum > Przedszkole
Maxik
Może tamat ma taki sobie tytuł, ale nic innego nie wymyśliłem. Chodzi mi o zawartośc pewnych divów na stronie innej niż moja(zdalnej). Na tej stronie mamy kilka divów o określonym id. Ja chciałbym poprzez PHP wejśc na tą stronę bez żadnego logowania(nie jest wymagane) i pobrac zawarto
c divów o tym określonym ID.
Jakie funkcje użyc i jak ustalic ID divów? Z góry dziękuję za odpowiedź.
l0ud
Pobierz stronę za pomocą najprościej - tej funkcji
http://pl.php.net/manual/pl/function.file-get-contents.php

Aby zdobyć odpowiednie fragmenty jej zawartości, poczytaj o wyrażeniach regularnych. Pełno tego na forum smile.gif
Kowalikus
file_get_contents" title="Zobacz w manualu PHP" target="_manual

jeśli nie zadziała to curl" title="Zobacz w manualu PHP" target="_manual albo fsockoopen" title="Zobacz w manualu PHP" target="_manual.

Za pomocą którejś z tych funkcji pobierzesz zawartość strony docelowej. Następnie musisz użyć wyrażeń regularnych do wyciągnięcia zawartosci tego DIVa.
Maxik
A czy któś mógłby mi konkretniej opowiedziec o wyrażeniach regularnych w stosunku do divów w divach? Przykładowy div z tej strony:
Kod
<div class="PlayerClanInfoDetails">
                            <table cellpadding="3" cellspacing="3" bgcolor="black" width="100%">
                                <tr>
                                    <td class="PlayerStatistics">                    
                    Level:
                                          <div class="PlayerLevel">
                      <div style='width:24px;height:15px;background-image: url(/images/expbar.gif);color:White;text-align:center;'>
                          24
                          </div>
                      </div>
                    Ratio:
                    <div style='width:0px;height:15px;background-image: url(/images/expbar.gif);color:White;text-align:center;margin-left: 20px;'>
                      1.4
                    </div>
                    Rank:
                    <div class='PlayerRank'>
                      8696 th
                    </div>
                    Kills:
                    <div class='PlayerKills'>
                    11738
                  </div>
                    Deaths:
                    <div class='PlayerDeaths'>
                      8362
                    </div>
                  
                    Experience:
                    <div class='PlayerDeaths'>
                      350003
                    </div>
                    
                  </td>                                    
                                </tr>                                
                            </table>
                        </div>

Potrzebne są mi tylko cyferki. Do tego jak przypisac wartości divów do oddzielnych zmiennych? Explode, list czy może coś innego?
Kowalikus
Poczytaj o wyrażeniach regularnych
Maxik
Poczytałem, no cóż ciekawe. Jednak nie wszystko jest dla mnie zrozumiałe lub po prostu nie o to chodzi. Same wyrażenia regularne OK. Ale jak każdą z wartości przypisac do zmiennych? Czy to także funkcja ereg eregi?
Kowalikus
funkcją preg_match" title="Zobacz w manualu PHP" target="_manual otrzymasz tablicę zmiennych w których znajdą się liczby które chcesz zagrabić winksmiley.jpg z tej strony
Maxik
Na tej stronie są ID. Ja mam do dyspozycji nick. Powiedzmy, że wywołuje wyszukiwanie. Znajduje mi 3 osoby, wtedy potrzebuje ID osoby o podanym nicku, dokładnie o tym(bez sufixów). Wyniki pogrupowane są liniami, czyli dośc standardowo. Potrzebuje wyciągnąc link z linii w której jest nick osoby, lub po prostu ostatniej linii bo jak zauważyłem te surowe i odpowiednie zarazem linki są na końcu. Podejrzewam, że to będzie trudne. Szczegolnie, że system nie przewiduje wywołania po nicku. Wiem napewno, że napisanie tego skryptu jest możliwe, bo jeden taki już jest.
nowotny
No... smile.gif to do roboty... smile.gif
-wik-
Cytat(Maxik @ 22.02.2008, 14:58:46 ) *
Potrzebne są mi tylko cyferki. Do tego jak przypisac wartości divów do oddzielnych zmiennych? Explode, list czy może coś innego?


'/<div class=["\'](PlayerRank|PlayerKills|PlayerDeaths|PlayerDeaths)["\']>([\d\D]*)<\/div>/iU'

<div class= pasuje do początek diva
["\'] cudzysłów lub apostrof
(PlayerRank|PlayerKills|PlayerDeaths|PlayerDeaths) dopasowuje PlayerRank lub PlayerKills itd., ciąg znaków między nawiasami trafi do tablicy
["\'] j/w
>([\d\D]*)<\/div> pasuje do zero lub więcej, wszystkich znaków, łącznie z znakiem nowej linii, które znajdują się między > a </div>

Kod
<?php

    $adres = "./doc.txt";
    $strona = file_get_contents($adres);

      preg_match_all('/<div class=["\'](PlayerRank|PlayerKills|PlayerDeaths|PlayerDeaths)["\']>([\d\D]*)<\/div>/iU', $strona, $wynik);
      print_r($wynik);
      echo $wynik[1][1] . "=" .  $wynik[2][1] . "\n";
      echo $wynik[1][2] . "=" .  $wynik[2][2] . "\n";
      echo "itd.";
?>
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.