Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]Wyciąganie danych.
Forum PHP.pl > Forum > Przedszkole
Bartusek
Podaję kod HTML

Cytat
<TD ALIGN='right'>1.&nbsp;</TD>
<TD>&nbsp;<A NAME='[b]bezradny[/b]'></A><A HREF='search.php?name=bezradny&' target='_blank'> bezradny</A>&nbsp;</TD>
<TD ALIGN='right'>&nbsp;1929&nbsp;</TD>



Jak wyciągnąć za pomocą file_get_contents i preg_match dane 1. , bezradny , 1929 ?

  1. <?php
  2.  
  3.  
  4.  
  5.  
  6.   $page = file_get_contents("http://armia.toproste.pl/stats.php");
  7.  
  8.   $name = "|'([^<]+?)&nbsp;</TD><TD>&nbsp;<A HREF='search.php?name=([^<]+?)&' target='_blank'>([^<]+?)</A>&nbsp;</TD><TD>&nbsp;([^<]+?)&nbsp;</TD>'|i";
  9.  
  10.  
  11.   preg_match($page, $name, $page);
  12.  
  13.    echo $name[1];
  14.  
  15.      
  16. ?>


Coś takiego wykombinowałem. Nie wiem, poradźcie coś.
nospor
Cytat
Nie wiem, poradźcie coś.


Ja ci polecam zajrzec do manuala i nie pisac takich glupot na chybil trafil. Mialem juz ci podac rozwiązanie, ale jak zobaczylem te linijke
Cytat
preg_match($page, $name, $page);


To mi sie odechcialo. Totalne olejstwo z twojej strony...
Bartusek
Pomyłka. Uczę się dopiero robić w php... Niby wszyscy każą przeczytać manual ale tam nie ma konkretnych przykładów.
webdevil
Cytat(Bartusek @ 10.02.2009, 21:17:55 ) *
ale tam nie ma konkretnych przykładów.


Czy na pewno mówisz o php.net? winksmiley.jpg
nospor
w tym przypadku jasno jak wol masz napisane w manualu ktory parametr jest czym w preg_match() wiec daruj sobie te teksty

jesli by to byla naprawde "pomylka" to bys po 5 minutach sam poprawil sobie kod a nie lecial z takim preg_match() na forum
Bartusek
Po przeczytaniu nadal nic nie wiem. Jeżeli jesteś taki dobry to pomóż dry.gif
nospor
no to pokaz kod jaki masz po przeczytaniu tego co miales przeczytac.
Bartusek
  1. <?php
  2. $page = file_get_contents("http://armia.toproste.pl/stats.php");
  3.  
  4. $name = "|'<TD ALIGN='right'> 1.&nbsp;</TD>
  5.            <TD>&nbsp;<A NAME='sarumar'></A><A HREF='search.php?name=([^<]+?)&' target='_blank'>([^<]+?)</A>&nbsp;</TD>
  6.            <TD ALIGN='right'>&nbsp;([^<]+?)&nbsp;</TD>'|i";
  7.  
  8. $name2 = "|'<TD ALIGN='right'>2.&nbsp;</TD>
  9.            <TD>&nbsp;<A NAME='([^<]+?)'></A><A HREF='search.php?name=([^<]+?)&' target='_blank'>([^<]+?)</A>&nbsp;</TD>
  10.  
  11.            <TD ALIGN='right'>&nbsp;([^<]+?)&nbsp;</TD>'|i";
  12.  
  13.  
  14. preg_match($name, $page, $name);
  15. preg_match($name2, $page, $name2);
  16.  
  17. echo $name[1];
  18. echo $name2[1];
  19. ?>


kod strony

  1. <TD ALIGN='right'>1.&nbsp;</TD>
  2. <TD>&nbsp;<A NAME='sarumar'></A><A HREF='search.php?name=Sarumar&' target='_blank'> Sarumar</A>&nbsp;</TD>
  3. <TD ALIGN='right'>&nbsp;1929&nbsp;</TD>
  4. <TD ALIGN='right'>&nbsp;145&nbsp;</TD>
  5. <TD ALIGN='right'>&nbsp;21&nbsp;</TD>
  6. <TD ALIGN='right'>&nbsp;15&nbsp;</TD>
  7. <TD ALIGN='right'>&nbsp;16&nbsp;</TD>
  8. <TD ALIGN='right'>&nbsp;11&nbsp;</TD>
  9. <TD ALIGN='right'>&nbsp;14&nbsp;</TD>
  10. <TD ALIGN='right'>&nbsp;36&nbsp;</TD>
  11. <TD ALIGN='right'>&nbsp;10&nbsp;</TD>
  12.  
  13. </TR>
  14. <TR>
  15. <TD ALIGN='right'>2.&nbsp;</TD>
  16. <TD>&nbsp;<A NAME='abu hamza al muhadzir'></A><A HREF='search.php?name=Abu Hamza al Muhadzir&' target='_blank'> Abu Hamza al Muhadzir</A>&nbsp;</TD>
  17. <TD ALIGN='right'>&nbsp;1811&nbsp;</TD>
  18. <TD ALIGN='right'>&nbsp;146&nbsp;</TD>
  19. <TD ALIGN='right'>&nbsp;16&nbsp;</TD>
  20. <TD ALIGN='right'>&nbsp;14&nbsp;</TD>
  21. <TD ALIGN='right'>&nbsp;16&nbsp;</TD>
  22. <TD ALIGN='right'>&nbsp;10&nbsp;</TD>
  23. <TD ALIGN='right'>&nbsp;11&nbsp;</TD>
  24. <TD ALIGN='right'>&nbsp;36&nbsp;</TD>
  25. <TD ALIGN='right'>&nbsp;10&nbsp;</TD>
  26.  
  27. </TR>



Nic na stronie się nie pojawia
zegarek84
Kod
$page = file_get_contents("http://armia.toproste.pl/stats.php");

  $name = '/([0-9.]+?)&nbsp;<\/TD>[^<]*?<TD>&nbsp;<a name=[^>]+?><\/a><A HREF=[^>]+?> ([^<]+?)<\/A>&nbsp;<\/TD>[^<]*?<TD[^;]+?;([0-9]+?)&nbsp;<\/TD>/i';


  preg_match_all($name, $page, $matches);

$do=count($matches[1]);
for($i=0;$i<$do;++$i){
echo $matches[1][$i].' - '.$matches[2][$i].' - '.$matches[3][$i].'<br/>';
}
Bartusek
@up
Dzięki. Mam inne pytanie.


Jak zrobić by było

  1. <?php
  2. $page = file_get_contents(&#092;"http://armia.toproste.pl/stats.php\");
  3.  
  4.  $name = '/([0-9.]+?)&nbsp;</TD>[^<]*?&nbsp;]+?></a>[url="%5B%5E"]]+?> ([^<]+?)</A>&nbsp;</TD>[^<]*?</TD>/i';
  5.  
  6.  
  7.  preg_match_all($name, $page, $matches);
  8.  
  9. $do=count($matches[1]);
  10. for($i=0;$i<$do;++$i){
  11. echo $matches[1][$i].' - '.$matches[2][$i].' - '.$matches[3][$i].'
  12. ';
  13. }
  14.  
  15. ?>
http://armia.toproste.pl/search.php?name=[do 200 wyników]

I wyciągało z tego dane

  1. <tr>
  2. <td width="50%">Experience:</td>
  3. <td width="50%">119306687913</td>
  4. </tr>


I dodawało tak:

1. - Sarumar - 1929 - 119306687913
2. - Abu Hamza al Muhadzir - 1811 - cyfry
3. - Neko Knight - 1782 - cyfry
4. - Woder Bone - 1736 - cyfry
zegarek84
zanim wypróbujesz rozwiązanie to przede wszystkim rada żebyś to zrzucił do jakiejś bazy danych bo nieźle łącza pociągniesz ;p (dobrze by było to ściągać przez curl'a z ustawiona kompresją stron ale;p)

i żeby nie było, że skrypcik nie działa to najpierw wyświetl tylko 10 wyników (a i tak trzeba na nie czekać):
Kod
$page = file_get_contents("http://armia.toproste.pl/stats.php");
$name = '/([0-9.]+?)&nbsp;<\/TD>[^<]*?<TD>&nbsp;<a name=[^>]+?><\/a><A HREF=[^>]+?> ([^<]+?)<\/A>&nbsp;<\/TD>[^<]*?<TD[^;]+?;([0-9]+?)&nbsp;<\/TD>/i';
preg_match_all($name, $page, $matches);

$ht='http://armia.toproste.pl/search.php?name=';
$name = '/Experience:<\/td>\s+?<td width="50%">([0-9]+?)<\/td>/i';

for($i=0;$i<10;++$i){
$page = file_get_contents($ht.urlencode($matches[2][$i]));
preg_match($name, $page, $match);
echo $matches[1][$i].' - '.$matches[2][$i].' - '.$matches[3][$i].' - '.$match[1].'<br/>';
}

dla całej pętli nie chciało mi się czekać na rezultat ;p - ale prawidłowe rozwiązanie bez ograniczeń wygląda tak:
Kod
$page = file_get_contents("http://armia.toproste.pl/stats.php");
$name = '/([0-9.]+?)&nbsp;<\/TD>[^<]*?<TD>&nbsp;<a name=[^>]+?><\/a><A HREF=[^>]+?> ([^<]+?)<\/A>&nbsp;<\/TD>[^<]*?<TD[^;]+?;([0-9]+?)&nbsp;<\/TD>/i';
preg_match_all($name, $page, $matches);

$ht='http://armia.toproste.pl/search.php?name=';
$name = '/Experience:<\/td>\s+?<td width="50%">([0-9]+?)<\/td>/i';
$do=count($matches[1]);

for($i=0;$i<$do;++$i){
$page = file_get_contents($ht.urlencode($matches[2][$i]));
preg_match($name, $page, $match);
echo $matches[1][$i].' - '.$matches[2][$i].' - '.$matches[3][$i].' - '.$match[1].'<br/>';
}


jednym słowem pasuje zmodyfikować skrypcik żeby przynajmniej dane wrzucić odrazu do jakiejkolwiek bazy danych, mysql, sqlite czy choćby do zwykłego notatnika...
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.