Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie ilosci glosow funkcja eregi()
Forum PHP.pl > Forum > PHP
Razzly100
Jestem w trakcie tworzenia Vote System. Jednakze mam problem.

Otóż mam taki skrypt:

  1. <?php
  2. //Połączenie z URL-em i odczytanie informacji
  3. $url="http://l2.hopzone.net/lineage2/moreinfo/L2EXtreme/73666.html"; //przykladowy url
  4.  
  5. if(!($zawartosc = file_get_contents($url)))
  6. {
  7. echo 'Otwarcie URL niemożliwe';
  8. }
  9.  
  10. //odnalezienie i wyświetlenie właściwej części strony
  11.  
  12. $wzor = '[0-9]*';
  13.  
  14. if(eregi("div align=\"center\">([0-9]+)", $zawartosc, $votes))
  15. {
  16. echo "<p>Głosów: ";
  17. echo $votes[1];
  18. echo '</p>';
  19.  
  20. }
  21.  
  22. else
  23. {
  24. echo '<p>Niedostepne</p>';
  25.  
  26. };
  27.  
  28. ?>
  29.  
  30.  


Teraz gdy otwieram pliczek zamiast głosów (okolo 1100) wyskakuje mi liczba 8 czyli pokazuje cyfre z innego miejsca niz ja potrzebuje.
Potrzebuje sciagnac ile glosow mam w danej chwili np. "Votes 1152" z strony na przyklad http://l2.hopzone.net/lineage2/moreinfo/L2EXtreme/73666.html.

Ktos moze mnie nakierować jak sprawic zeby funkcja ta zczytywala poprawne cyfry?
Ges
Pomijając fakt iż funkcja eregi jest deprecated.

Pomyśl sobie co Ty za funkcje napisałeś... Szukasz na tej stronie pierwszego wystąwienia <div align=\"center\"> i cyframi za tym Divem.
A VOTES znajdują się w:

<div align="center" class="moreinfo_total_rank_text">1156</div>

Jakim cudem miałoby Ci to znaleźć tego Diva ? Jak div które poszukujesz nie przechodzi przez Twoje wyrażenia regularne ?
A teraz pomyśl skąd jest 8...

Zaglądając w źródło strony, pierwszym divem który spełnia Twoje wyrażenie regularne jest:
<div align="center">8.8</div>
Tyle, że Twój warunek zatrzymuje się na ".", bo liczy, ze za DIV mogą być tylko liczby.
Stąd odnajduje tylko "8"...

Tak ciężko znaleźć błąd we własnym kodzie składającym się z 10 linijek ? Czy poprostu to lenistwo ?
Kod poprawiony (bo uważam, że to lenistwo z Twojej strony, że oczekujesz poprawiania tak prostego kodu tongue.gif)

  1. $url = "http://l2.hopzone.net/lineage2/moreinfo/L2EXtreme/73666.html"; //przykladowy url
  2.  
  3.  
  4. if (! ($zawartosc = file_get_contents($url)))
  5. {
  6. echo 'Otwarcie URL niemożliwe';
  7. exit();
  8. }
  9.  
  10. $wzor = '([0-9]*)';
  11.  
  12. if (eregi("<div align=\"center\" class=\"moreinfo_total_rank_text\">" . $wzor . "</div>", $zawartosc, $votes))
  13. {
  14. echo "<p>Votes: ";
  15. echo $votes[1];
  16. echo '</p>';
  17.  
  18. }
  19.  
  20. else
  21. {
  22. echo '<p>Niedostepne</p>';
  23.  
  24. }
Razzly100
Cytat(Ges @ 11.03.2010, 14:47:20 ) *
Pomijając fakt iż funkcja eregi jest deprecated.

Pomyśl sobie co Ty za funkcje napisałeś... Szukasz na tej stronie pierwszego wystąwienia <div align=\"center\"> i cyframi za tym Divem.
A VOTES znajdują się w:

<div align="center" class="moreinfo_total_rank_text">1156</div>

Jakim cudem miałoby Ci to znaleźć tego Diva ? Jak div które poszukujesz nie przechodzi przez Twoje wyrażenia regularne ?
A teraz pomyśl skąd jest 8...

Zaglądając w źródło strony, pierwszym divem który spełnia Twoje wyrażenie regularne jest:
<div align="center">8.8</div>
Tyle, że Twój warunek zatrzymuje się na ".", bo liczy, ze za DIV mogą być tylko liczby.
Stąd odnajduje tylko "8"...

Tak ciężko znaleźć błąd we własnym kodzie składającym się z 10 linijek ? Czy poprostu to lenistwo ?
Kod poprawiony (bo uważam, że to lenistwo z Twojej strony, że oczekujesz poprawiania tak prostego kodu tongue.gif)

  1. $url = "http://l2.hopzone.net/lineage2/moreinfo/L2EXtreme/73666.html"; //przykladowy url
  2.  
  3.  
  4. if (! ($zawartosc = file_get_contents($url)))
  5. {
  6. echo 'Otwarcie URL niemożliwe';
  7. exit();
  8. }
  9.  
  10. $wzor = '([0-9]*)';
  11.  
  12. if (eregi("<div align=\"center\" class=\"moreinfo_total_rank_text\">" . $wzor . "</div>", $zawartosc, $votes))
  13. {
  14. echo "<p>Votes: ";
  15. echo $votes[1];
  16. echo '</p>';
  17.  
  18. }
  19.  
  20. else
  21. {
  22. echo '<p>Niedostepne</p>';
  23.  
  24. }


Nie lenistwo co po prostu błąd. Po zaznaczeniu głosów (1166) i wybraniu opcji "Pokaż źródło zaznaczenia" mam taki kod:

  1. <div class="moreinfo_total_rank_text" align="center">1166</div>


Mozilla oszukuje sadsmiley02.gif No nic, dzięki za pomoc;]
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.