Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]Pobieranie informacji z phpbb
Skr3czu
post 17.05.2008, 09:35:44
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 12.03.2007

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


Witam,

Mam taki kod który pobiera informację z IPB, ale jak zrobić aby pobierał dane z phpbb 3 np. z forum.dobreprogramy.pl ?
  1. <?php
  2. $strona = 'http://forum.php.pl';
  3.  
  4. $data = file_get_contents($strona);
  5. preg_match_all('#<p class=\"members\">(.*?) postów | (.*?) użytkowników</p>#', $data, $wynik);
  6.  
  7. $posty = $wynik[1][0]; // liczba postów
  8. $uzytkownicy = $wynik[2][1]; // liczba użytkowników
  9.  
  10. echo 'Postów: '.$posty.' Użytkowników: '.$uzytkownicy;
  11.  
  12. ?>


Próbowałem kilka razy sam, ale za bardzo nie wiem jak to zrobić, może ktoś mi pomóc albo wytłumaczyć...
Go to the top of the page
+Quote Post
Trojan
post 17.05.2008, 10:23:40
Post #2





Grupa: Zarejestrowani
Postów: 53
Pomógł: 10
Dołączył: 17.01.2008

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


  1. <?php
  2.  
  3. //adres strony
  4. $strona = 'http://forum.dobreprogramy.pl';
  5.  
  6. //pobieranie zrodla strony
  7. $data = file_get_contents($strona);
  8.  
  9.  
  10. /*
  11. rozbicie zrodla na tablice w miejscu '<h3>Statystyki</h3>'
  12. $data[0] <- żrodlo strony przed ciagiem znaków '<h3>Statystyki</h3>'
  13. $data[1] <- żrodlo strony za ciagiem znaków '<h3>Statystyki</h3>'
  14. */
  15. $data = explode('<h3>Statystyki</h3>',$data);
  16.  
  17.  
  18. /*
  19. rozbicie $data[1] na:
  20.  
  21. $data[1] = '1336252</strong> &bull; Wszystkich tematĂłw:'
  22. $data[2] = '194233</strong> &bull; Wszystkich uĹźytkownikĂłw:'
  23. $data[3] = '70092</strong> &bull; Ostatnio zarejestrowaĹ� siÄ�'
  24. */
  25. $data = explode('<strong>',$data[1]);
  26.  
  27. //teraz wystarczy tylko usunac to co znajduje sie za interesujaca nas liczba
  28.  
  29. //z $data[1] wybieramy ciag znaków znajdujacy sie przed '</strong>' i zapisujemy do zmiennej $posty
  30. $posty = explode('</strong>',$data[1]);
  31. $posty = $posty[0];
  32.  
  33. //z $data[2] wybieramy ciag znaków znajdujacy sie przed '</strong>' i zapisujemy do zmiennej $tematy
  34. $tematy = explode('</strong>',$data[2]);
  35. $tematy = $tematy[0];
  36.  
  37. //z $data[3] wybieramy ciag znaków znajdujacy sie przed '</strong>' i zapisujemy do zmiennej $users
  38. $users = explode('</strong>',$data[3]);
  39. $users = $users[0];
  40.  
  41. //wyswietlamy informacje
  42. echo 'postów: '.$posty.'<br>tematow: '.$tematy.'<br>userow: '.$users;
  43.  
  44. ?>


Ja bym to napisał tak.. Mam nadzieje ze załapiesz na jakiej zasadzie to działa i dasz rade napisać coś podobnego dla innej strony.

Powodzenia...
Go to the top of the page
+Quote Post
Crozin
post 17.05.2008, 11:29:22
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


  1. <?php
  2. $strona = 'http://forum.dobreprogramy.pl';
  3.  
  4. $data = file_get_contents($strona);
  5. preg_match_all('#<p>Wszystkich postów: <strong>([0-9]+)</strong>.*Wszystkich użytkowników: <strong>([0-9]+)</strong>#Usi', $data, $wynik);
  6.  
  7. $posty = $wynik[1][0]; // liczba postów
  8. $uzytkownicy = $wynik[2][1]; // liczba użytkowników
  9.  
  10. echo 'Postów: '.$posty.' Użytkowników: '.$uzytkownicy;
  11.  
  12. ?>
Albo spróbuj tak.
Go to the top of the page
+Quote Post
Skr3czu
post 17.05.2008, 11:39:18
Post #4





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 12.03.2007

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


Dzięki.

Ale jak zrobić jeszcze, aby pobierało z phpbb2 i phpbb by przemo ?
np. http://www.przemo.org/phpBB2/forum i http://www.phpbb2.pl/forum

Bo nadal nie nie mogę się połapać :/

Pozdrawiam.

Edit:
Kod Trojana bardziej mi odpowiada bo pokazuje ile jest tematów...

Ten post edytował Skr3czu 17.05.2008, 11:40:30
Go to the top of the page
+Quote Post
Trojan
post 17.05.2008, 11:51:12
Post #5





Grupa: Zarejestrowani
Postów: 53
Pomógł: 10
Dołączył: 17.01.2008

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


http://www.przemo.org/phpBB2/forum
  1. <?php
  2. $strona = 'http://www.przemo.org/phpBB2/forum';
  3.  
  4. $data = file_get_contents($strona);
  5.  
  6. $data = explode('Nasi użytkownicy napisali ',$data);
  7.  
  8. $data = explode('<b>',$data[1]);
  9.  
  10. $posty = explode('</b>',$data[1]);
  11. $posty = $posty[0];
  12.  
  13. $tematy = explode('</b>',$data[2]);
  14. $tematy = $tematy[0];
  15.  
  16. $users = explode('</b>',$data[3]);
  17. $users = $users[0];
  18.  
  19. echo 'postów: '.$posty.'<br>tematow: '.$tematy.'<br>userow: '.$users;
  20.  
  21. ?>


http://www.phpbb2.pl/forum
  1. <?php
  2. //na tej stronie niema podanej ilości tematów
  3. $strona = 'http://www.phpbb2.pl/forum';
  4.  
  5. $data = file_get_contents($strona);
  6.  
  7. $data = explode('Nasi użytkownicy napisali ',$data);
  8.  
  9. $data = explode('<b>',$data[1]);
  10.  
  11. $posty = explode('</b>',$data[1]);
  12. $posty = $posty[0];
  13.  
  14. $users = explode('</b>',$data[2]);
  15. $users = $users[0];
  16.  
  17. echo 'postów: '.$posty.'<br>userow: '.$users;
  18.  
  19. ?>


Zobacz co pozmieniałem i na podstawie tego następny skrypt napisz sam... Prościej już sie chyba nie da wytłumaczyć haha.gif

Ten post edytował Trojan 17.05.2008, 12:00:41
Go to the top of the page
+Quote Post
Skr3czu
post 17.05.2008, 12:03:17
Post #6





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 12.03.2007

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


A jak zrobić, aby w IPB też pokazywało ile jest tematów ?
Cytat
<?php
$strona = 'http://forum.php.pl';

$data = file_get_contents($strona);
preg_match_all('#<p class=\"members\">(.*?) postów | (.*?) użytkowników<\/p>#', $data, $wynik);

$posty = $wynik[1][0]; // liczba postów
$uzytkownicy = $wynik[2][1]; // liczba użytkowników

echo 'Postów: '.$posty.' Użytkowników: '.$uzytkownicy;

?>

?

Tutaj nie ma ilości tematów... ;/ mój bład...

Ten post edytował Skr3czu 17.05.2008, 12:09:01
Go to the top of the page
+Quote Post
Trojan
post 17.05.2008, 12:06:36
Post #7





Grupa: Zarejestrowani
Postów: 53
Pomógł: 10
Dołączył: 17.01.2008

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


już poprawiłem. forum źle zinterpretowało znaczniki html.... :/
Go to the top of the page
+Quote Post
Skr3czu
post 17.05.2008, 12:09:33
Post #8





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 12.03.2007

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


Próbuje z Mybb (pbelite.org) i tam mi jakoś nie wchodzi ;/

Możesz mi to ostatnie pomóc ?
Go to the top of the page
+Quote Post
Crozin
post 17.05.2008, 12:43:26
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Polecam lekturę regexp" title="Zobacz w manualu PHP" target="_manual (albo kurs http://bedkowski.pl/a/php_regex/ ) bo to naprawdę nie są trudne rzeczy winksmiley.jpg

Do MyBB
  1. <?php
  2. preg_match('#użytkownicy napisali ([0-9,]+) postów w ([0-9,]+).*Razem mamy ([0-9,]+) zarejestrowanych#Usi', $soruce, $wynik);
  3. ?>


Ten post edytował Crozin 17.05.2008, 12:43:43
Go to the top of the page
+Quote Post
Skr3czu
post 17.05.2008, 12:56:26
Post #10





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 12.03.2007

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


Crozin, nie działa... i jeszcze żeby pokazywało ile jest tematów...

Z innymi skryptami sobie poradziłem, ale z mybb mi nie działa ;/
Go to the top of the page
+Quote Post
Crozin
post 17.05.2008, 13:04:30
Post #11





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Jak nie działa jak działa tongue.gif
  1. <?php
  2.  
  3. error_reporting(E_ALL | E_STRICT);
  4.  
  5. $soruce = file_get_contents('http://pbelite.org');
  6.  
  7. preg_match('#użytkownicy napisali ([0-9,]+) postów w ([0-9,]+).*Razem mamy ([0-9,]+) zarejestrowanych#Usi', $soruce, $matches);
  8.  
  9.  
  10. print_r($matches);
  11.  
  12. ?>
Wynik:
Kod
Array
(
    [0] => użytkownicy napisali 12,008 postów w 712 tematach.<br />
Razem mamy 1,866 zarejestrowanych
    [1] => 12,008
    [2] => 7
    [3] => 1,866
)
Go to the top of the page
+Quote Post
Skr3czu
post 17.05.2008, 13:13:43
Post #12





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 12.03.2007

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


mi coś nie działa ;/ możesz mi to wytłumaczyć jak zrobić w tym skrypcie:

  1. <?php
  2. $strona = 'http://www.przemo.org/phpBB2/forum';
  3.  
  4. $data = file_get_contents($strona);
  5.  
  6. $data = explode('Nasi użytkownicy napisali ',$data);
  7.  
  8. $data = explode('<b>',$data[1]);
  9.  
  10. $posty = explode('</b>',$data[1]);
  11. $posty = $posty[0];
  12.  
  13. $tematy = explode('</b>',$data[2]);
  14. $tematy = $tematy[0];
  15.  
  16. $users = explode('</b>',$data[3]);
  17. $users = $users[0];
  18.  
  19. echo 'postów: '.$posty.'<br>tematow: '.$tematy.'<br>userow: '.$users;
  20.  
  21. ?>
Go to the top of the page
+Quote Post
Crozin
post 17.05.2008, 13:35:09
Post #13





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Ale stosujesz to dla http://www.przemo.org/phpBB2/forum czy http://pbelite.org? Bo na pierwszym jest nieco inny kod winksmiley.jpg
  1. <?php
  2.  
  3. error_reporting(E_ALL | E_STRICT);
  4.  
  5. $source = file_get_contents('http://www.przemo.org/phpBB2/forum');
  6.  
  7. preg_match('#u.ytkownicy napisali <b>([0-9]+)</b> post.w, temat.w <b>([0-9]+)</b><br />Mamy <b>([0-9]+)</b>#Usi', $source, $matches);
  8.  
  9.  
  10. print_r($matches);
  11.  
  12. ?>
Go to the top of the page
+Quote Post
Skr3czu
post 17.05.2008, 13:37:10
Post #14





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 12.03.2007

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


Mi chodzi o PBelite.org czyli mybb i tylko to mybb mi nie działa... inne skrypty mi działają...

Więc jak zrobić z tym mybb ?
Go to the top of the page
+Quote Post
Crozin
post 17.05.2008, 16:26:37
Post #15





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


http://crozin.com/~temp/forums.php
  1. <?php
  2.  
  3. header('Content-type: text/html; charset=utf-8');
  4. error_reporting(E_ALL | E_STRICT);
  5.  
  6. echo "<pre>Forum dobreprogramy.pl\n";
  7.  
  8. $source = file_get_contents('http://forum.dobreprogramy.pl');
  9. preg_match_all('#<p>Wszystkich postów: <strong>([0-9]+)</strong>.*tematów: <strong>([0-9]+)</strong>.*Wszystkich użytkowników: <strong>([0-9]+)</strong>#Usi', $source, $matches);
  10.  
  11. echo "\tPostów: " . $matches[1][0] . "\n\tTematów: " . $matches[2][0] . "\n\tUżytkowników: " . $matches[3][0];
  12. echo "\n\n\n=======================================\n\n\n";
  13.  
  14.  
  15.  
  16.  
  17. echo "Forum pbelite.org\n";
  18.  
  19. $source = file_get_contents('http://pbelite.org');
  20. preg_match_all('#użytkownicy napisali ([0-9,]+) postów w ([0-9,]+) tematach.*Razem mamy ([0-9,]+) zarejestrowanych#Usi', $source, $matches);
  21.  
  22. echo "\tPostów: " . $matches[1][0] . "\n\tTematów: " . $matches[2][0] . "\n\tUżytkowników: " . $matches[3][0];
  23. echo "\n\n\n=======================================\n\n\n";
  24.  
  25.  
  26.  
  27.  
  28.  
  29. echo "Forum przemo.org\n";
  30.  
  31. $source = iconv('iso-8859-2', 'utf-8', file_get_contents('http://www.przemo.org/phpBB2/forum/'));
  32. preg_match_all('#tkownicy napisali <b>([0-9]+)</b> postów, tematów <b>([0-9]+)</b><br />Mamy <b>([0-9,]+)</b> zarejestrowanych u#Usi', $source, $matches);
  33.  
  34. echo "\tPostów: " . $matches[1][0] . "\n\tTematów: " . $matches[2][0] . "\n\tUżytkowników: " . $matches[3][0];
  35. echo "\n\n\n=======================================\n\n\n";
  36.  
  37.  
  38.  
  39.  
  40. echo "Forum php.pl\n";
  41.  
  42. $source = iconv('iso-8859-2', 'utf-8', file_get_contents('http://forum.php.pl/index.html'));
  43. preg_match_all('#ytkownicy napisali <b>([0-9 ]+)</b> postów<br />Mamy <b>([0-9 ]+)</b> zarejestrowanych u#Usi', $source, $matches);
  44.  
  45. echo "\tPostów: " . $matches[1][0] . "\n\tUżytkowników: " . $matches[2][0];
  46. echo "\n\n\n=======================================\n\n\n";
  47.  
  48. ?>
Go to the top of the page
+Quote Post
Skr3czu
post 17.05.2008, 19:41:00
Post #16





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 12.03.2007

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


Dzięki, ale nie o to mi chodziło

ja chce przez ten skrypt:
  1. <?php
  2. $strona = 'http://www.przemo.org/phpBB2/forum';
  3.  
  4. $data = file_get_contents($strona);
  5.  
  6. $data = explode('Nasi użytkownicy napisali ',$data);
  7.  
  8. $data = explode('<b>',$data[1]);
  9.  
  10. $posty = explode('</b>',$data[1]);
  11. $posty = $posty[0];
  12.  
  13. $tematy = explode('</b>',$data[2]);
  14. $tematy = $tematy[0];
  15.  
  16. $users = explode('</b>',$data[3]);
  17. $users = $users[0];
  18.  
  19. echo 'postów: '.$posty.'<br>tematow: '.$tematy.'<br>userow: '.$users;
  20.  
  21. ?>


Wyciągnąć informacje z mybb, ale nie mam pojęcia jak...

Odświeżam, może mi ktoś pomóc ?

Mam jeszcze taki kod:
  1. <?php
  2.  
  3. $source = file_get_contents('http://pbelite.org');
  4. preg_match_all('#użytkownicy napisali ([0-9,]+) postów w ([0-9,]+) tematach.*Razem mamy ([0-9,]+) zarejestrowanych#Usi', $source, $matches);
  5.  
  6. $posty = $matches[1][0];
  7. $tematy = $matches[2][0];
  8. $uzytkownicy = $matches[3][0];
  9.  
  10. echo '<td bgcolor="#373737">'.$posty.'</td><td bgcolor="#373737">'.$tematy.'</td><td bgcolor="#373737">'.$users.'</td>';
  11.  
  12. ?>


ale też nie działa...
Go to the top of the page
+Quote Post
Crozin
post 17.05.2008, 19:47:04
Post #17





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Bo nie masz zmiennej $users - masz $uzytkownicy...

Po co ja na dwóch forach piszę/odpowiadam? tongue.gif
Go to the top of the page
+Quote Post
Skr3czu
post 17.05.2008, 19:51:31
Post #18





Grupa: Zarejestrowani
Postów: 215
Pomógł: 0
Dołączył: 12.03.2007

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


Cytat
Bo nie masz zmiennej $users - masz $uzytkownicy...


Zmieniłem, ale nadal nic nie daje... biała strona.

Cytat
Po co ja na dwóch forach piszę/odpowiadam?


biggrin.gif

Ten post edytował Skr3czu 17.05.2008, 19:52:31
Go to the top of the page
+Quote Post
Trojan
post 17.05.2008, 21:20:49
Post #19





Grupa: Zarejestrowani
Postów: 53
Pomógł: 10
Dołączył: 17.01.2008

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


w http://pbelite.org będzie trochę inaczej ponieważ wartości liczbowe nie są w znacznikach <b></b> lub coś w tym rodzaju.

Aby skrypt działał należy zmienić kodowanie na UTF-8

  1. <?php
  2. //adres strony
  3. $strona = 'http://pbelite.org';
  4.  
  5. //pobieranie zrodla strony
  6. $data = file_get_contents($strona);
  7.  
  8. /*
  9. wybieramy to co jest pomiędzy 'Nasi użytkownicy napisali ' i ' zarejestrowanych użytkowników.'
  10. w wyniku otrzymamy mniej wiecej cos takiego:
  11.  
  12. 12,030 postów w 712 tematach.
  13. Razem mamy 1,869
  14.  
  15. */
  16. $data = explode('Nasi użytkownicy napisali ',$data);
  17. $data = explode(' zarejestrowanych użytkowników.',$data[1]);
  18.  
  19. /*
  20. teraz w $data[0] mamy:
  21.  
  22. 12,030 postów w 712 tematach.
  23. Razem mamy 1,869
  24.  
  25. */
  26.  
  27. //bierzemy to co jest przed ' postów w ' i zapisujemy do zmiennej $posty
  28. $data = explode(' postów w ',$data[0]);
  29. $posty = $data[0];
  30.  
  31. /*
  32. w $data[1] mamy teraz to co jest po ' postów w ' czyli:
  33.  
  34. 712 tematach.
  35. Razem mamy 1,869
  36.  
  37. */
  38.  
  39. //bierzemy to co jest przed ' tematach.<br />' i zapisujemy do zmiennej $tematy
  40. $data = explode(' tematach.<br />',$data[1]);
  41. $tematy = $data[0];
  42.  
  43. /*
  44. w $data[1] mamy teraz to co jest po ' tematach.<br />' czyli:
  45.  
  46. Razem mamy 1,869
  47.  
  48. */
  49.  
  50. //bierzemy to co jest PO 'Razem mamy ' i zapisujemy do zmiennej $users
  51. $data = explode('Razem mamy ',$data[1]);
  52. $users = $data[1];
  53.  
  54. echo 'postów: '.$posty.'<br>tematow: '.$tematy.'<br>userow: '.$users;
  55. ?>
Go to the top of the page
+Quote Post
Crozin
post 17.05.2008, 21:48:35
Post #20





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Teraz jedynym powodem, dla którego może Ci nie działać może być inne kodowanie pbelite.org i skryptu php (w skutek czego polskie znaki w wyr.reg. moga "kolidować")

Zmień kodowanie $source tak jak to zrobiłem http://forum.php.pl/index.php?showtopic=94...mp;#post-472298 w przykładzie dla forum przemo.org
  1. <?php
  2. $source = iconv('KODOWANIE_pbelite', 'KODOWANIE_TWOJEJ_STRONY', file_get_contents('http://pbelite.org'));
  3. ?>
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 6.06.2024 - 15:53