Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pobieranie danych z innej strony
Forum PHP.pl > Forum > Przedszkole
Dizzy
  1. $path = "http://www.tibia.com/community/?subtopic=whoisonline&world=".urlencode($world);
  2. $contents = file_get_contents($path);
  3. $members = split("<TABLE BORDER=0 CELLSPACING=1 CELLPADDING=4 WIDTH=100%>\s|\S*</TABLE>",$members); // get the big parts
  4. $members = strip_tags($members[1],'<tr>'); //take the members element
  5. $members = preg_replace('!<TR BGCOLOR=#w{6,6}|</TR>!','',$members);
  6. $members = str_replace(' ',' ',$members); //Replace HTML entity with normal space.
  7. $members = explode('>',$members);
  8. //End of BBMan code
  9. //Clear unnecessary array values.
  10. $characterSearch = str_replace(' ',' ',$name); //Recovert space to HTML entity for searching.
  11. //Apply ">" and "<" around name to eliminate chances of mistakenly reporting a name as online.
  12. //If you don't do this, searching for Thor would return as online if someone had the name Asthorm.
  13. $characterSearch = ">".$characterSearch."<";
  14. //Get the numbers for the lists.
  15. $inOnline = count($onlineList);
  16. $inOffline = count($offlineList);
  17. if (strpos($contents,$characterSearch)) {
  18. $onlineList[$inOnline] = $name;
  19. } else {
  20. $offlineList[$inOffline] = $name;
  21. }
  22. if ($onlineList[$inOnline] > '0'){ $stan = '[<font style="font-size: 8px; color: #00F000;">ON</font>]'; }
  23. if ($onlineList[$inOnline] < '0'){ $stan = '[<font style="font-size: 8px; color: #FF0000;">OFF</font>]'; }


Skrypt nagle przestał działać, wydaje mi się że przez nie wielkie zmiany na stronie Tibi.com
Mógłby mi ktoś z ty pomóc?:-/
potreb
Sprawdź co się zmieniło, wyprintuj elementy i będziesz miał wszystko gotowe.
Dizzy
Gdybym wiedział co zrobić to bym zrobił tongue.gif
Ja przerobiłem ten skrypt z innego i działał mi przez jakis rok ;-)
wNogachSpisz
Użyj PHP:DOM - wbudowanej w php biblioteki do obsługi (traversingu) drzewa DOM.

Najczęściej używane funkcje:
$dom->getElementById('id');
$dom->getElementsByTagName('id');
$element->getAttribute('attr');
$element->setAttribute('attr', 'value');
$element->hasAttribute('attr');

Taki kod jest czysty i odporny na niektóre modyfikacje HTML ze strony autora strony,
czego nie można powiedzieć o skryptach bazujących na wyrażeniach regularnych czy innych nieelastycznych technikach.
Dizzy
Jak mogę to zastosować w moim skrypcie?
wNogachSpisz
Jak najszybciej smile.gif

Mam napisać za Ciebie?

Zaczynasz od:

  1. $path = "http://www.tibia.com/community/?subtopic=whoisonline&world=".urlencode($world);
  2. $contents = file_get_contents($path);
  3.  
  4. $dom = new DOMDocument;
  5. @$dom->loadHTML($data);

Od tego momentu w zmiennej $dom masz całe drzewo dom..
Z tego co widze tabelka która Cię intersuje nie ma ID ani class, więc trzeba dać:
  1. $tableList = $dom->getElementsByTagName('table');

I próbować zidentyfikować tabeke np. po jej kolejności, np. 3cia tabelka w dokumencie.
lub np. po ilości wierszy..
Dizzy
Jakoś nie radze sobie z tym.

~Odświeżam~

Proszę o pomoc.

Powtórnie proszę o pomoc.

~Odświeżam
~

  1. $file = "http://www.tibia.com/community/?subtopic=worlds&world=$world";
  2. $text = file_get_contents($file) or die("World Does not exist.");
  3. preg_match_all('/\&amp;name=[^">]*">([^<]+)</i', $text, $matches);
  4. preg_match_all('/<\/TD><TD WIDTH=10\%>(.*)<\/[^>]+>/U', $text, $level);
  5.  
  6. $count = count($matches[0]);
  7. $script = 1;
  8.  
  9. for ($label = 0; $label < $count; $label++ ) {
  10.  
  11.  
  12. $matches[1][$label] = str_replace("%27","'",$matches[1][$label]);
  13. $matches[1][$label] = str_replace(" "," ",$matches[1][$label]);
  14. $matches[1][$label] = addslashes($matches[1][$label]);
  15.  
  16. if ( $print['character'] == '$matches[1][$label]' ) { $online = '[<font style="font-size: 8px; color: #00F000;">ON</font>]'; }
  17. if ( $print['character'] != '$matches[1][$label]' ) { $online = '[<font style="font-size: 8px; color: #FF0000;">OFF</font>]'; }
  18. }


Zrobiłem coś takiego ale nie chce działac ;-/
wookieb
Proszę przestać odświeżać temat.
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.