Witam. Staram się napisać skrypt który będzie importował dane z tabeli na stronie http://plkk.pl/index.php?p=stats jednak nie moge sobie poradzic z wyrazeniami regularnymi. Wg. mnie kod powinien wyglądać następująco:
  1. <?php
  2. $html = file_get_contents( 'http://plkk.pl/index.php?p=stats' );
  3.  
  4. preg_match_all("@<tr onmouseover=[\'\"]this.bgColor=[\'\"]#fef4db[\'\"] onmouseout=[\'\"]this.bgColor=[\'\"]#ffffff[\'\"][\'\"] align=[\'\"]center[\'\"] bgcolor=[\'\"]#ffffff[\'\"]>(.*)</tr>@", $html, $matches);
  5.  
  6. echo $matches[0][0];
  7. foreach($matches as $m){
  8. foreach($m as $a){
  9. echo $a;
  10. }
  11. }
  12. ?>

ponieważ interesują mnie tylko te wiersze. Równie dobrze mógłby pobierać cała tabele ale nie to jest problemem. Jeżeli próbuje to zrobić dla całej tabeli efekt jest ten sam czyli pusta tablica $matches.

Od razu dodam że dla kodu:
  1. <?php
  2. $html = file_get_contents( 'http://plkk.pl/index.php?p=stats' );
  3.  
  4. preg_match_all("@<tr(.*)>(.*)</tr>@", $html, $matches);
  5.  
  6. echo $matches[0][0];
  7. foreach($matches as $m){
  8. foreach($m as $a){
  9. echo $a;
  10. }
  11. }
  12. ?>

Wszystko działa z tymże wyników oczywiście dostaje za dużo(wszystkie <tr> na stronie)
Moze ktoś ma pomysł jak powinno wyglądać to wyrażenie żeby zadziałało.

W końcu udało mi się znaleźć rozwiązanie. Generalnie dobrze kombinowałem z tym że źródło strony inaczej było wyświetlane w ff a inaczej widział to serwer w związku z czym pomogła zmiana kolejności na
  1. preg_match_all("@<tr align=[\'\"]center[\'\"] onmouseover=[\'\"]this.bgColor=[\'\"]#fef4db[\'\"][\'\"] onmouseout=[\'\"]this.bgColor=[\'\"]#ffffff[\'\"][\'\"]>(.*)</tr>@", $html, $matches);