Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][HTML]Wyciąganie danych.
Bartusek
post 9.02.2009, 19:07:06
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 28.10.2008

Ostrzeżenie: (20%)
X----


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ś.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
nospor
post 10.02.2009, 11:38:44
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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...


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Bartusek
post 10.02.2009, 21:17:55
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 28.10.2008

Ostrzeżenie: (20%)
X----


Pomyłka. Uczę się dopiero robić w php... Niby wszyscy każą przeczytać manual ale tam nie ma konkretnych przykładów.
Go to the top of the page
+Quote Post
webdevil
post 10.02.2009, 21:19:25
Post #4





Grupa: Zarejestrowani
Postów: 82
Pomógł: 18
Dołączył: 2.02.2009

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


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
Go to the top of the page
+Quote Post
nospor
post 10.02.2009, 21:24:07
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Bartusek
post 10.02.2009, 22:01:47
Post #6





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 28.10.2008

Ostrzeżenie: (20%)
X----


Po przeczytaniu nadal nic nie wiem. Jeżeli jesteś taki dobry to pomóż dry.gif
Go to the top of the page
+Quote Post
nospor
post 10.02.2009, 22:29:02
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no to pokaz kod jaki masz po przeczytaniu tego co miales przeczytac.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Bartusek
post 10.02.2009, 23:22:40
Post #8





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 28.10.2008

Ostrzeżenie: (20%)
X----


  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
Go to the top of the page
+Quote Post
zegarek84
post 10.02.2009, 23:49:40
Post #9





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


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/>';
}


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
Bartusek
post 11.02.2009, 15:31:20
Post #10





Grupa: Zarejestrowani
Postów: 28
Pomógł: 1
Dołączył: 28.10.2008

Ostrzeżenie: (20%)
X----


@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
Go to the top of the page
+Quote Post
zegarek84
post 15.02.2009, 03:02:39
Post #11





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


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...

Ten post edytował zegarek84 15.02.2009, 03:26:25


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post

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: 14.08.2025 - 01:00