Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobieranie ilosci glosow funkcja eregi()
Razzly100
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 11.03.2010

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
Ges
post
Post #2





Grupa: Zarejestrowani
Postów: 61
Pomógł: 9
Dołączył: 22.02.2008

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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. }


Ten post edytował Ges 11.03.2010, 14:47:56
Go to the top of the page
+Quote Post
Razzly100
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 11.03.2010

Ostrzeżenie: (0%)
-----


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 (IMG:style_emoticons/default/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 (IMG:style_emoticons/default/sadsmiley02.gif) No nic, dzięki za pomoc;]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 23:06