![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 30.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Od niedawna bawię się z php. Ostatnio bardzo zainteresował mnie cURL i próbuję się go nauczyć, ale mam pewne problemy. Chciałem za pomocą cURL wyciągnąć sobie ze strony http://www.rmf.fm/au/?a=poplista 3 najpopularniejsze utwory, robię to tak:
W wyniku dostaję:
Ale nie pasuje mi ta część:
Jednak nie wiem jak się jej pozbyć. W ogóle to jakaś dziwna sprawa bo wyrażenie regularne którego używam: $wyk3reg = '/<A HREF="(.+?)">(.+?)<\/A><br>(.+?)  /'; Powinno działać po dodaniu na końcu $wyk3reg = '/<A HREF="(.+?)">(.+?)<\/A><br>(.+?)   <SPAN ID/'; bo tak jest na stronie, jednak to wyrażenie nie działa. Proszę o pomoc. Ten post edytował nitro11 30.08.2010, 13:28:39 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 389 Pomógł: 141 Dołączył: 11.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zły tytuł dałeś, bo problem nie z curlem a z regexp masz.
Kod $wykonawca3 = '#<table class="poplista-toptable" .*>(.*)</table>#iU'; wyciąga tabelepreg_match($wykonawca3, $nazwa, $wyk3); var_dump($wyk3); albo Kod $wykonawca3 = '#<tr class="poplista-row poplista-row-back\d".*>(.*)</tr>#iU'; wyciąga wierszepreg_match_all($wykonawca3, $nazwa, $wyk3); var_dump($wyk3); Póżniej sobie przejedź po tablicy( np foreach) i powyciągaj to co chcesz. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 30.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Rzeczywiście pomyliłem nazwę tytułu ale już poprawiłem (IMG:style_emoticons/default/smile.gif)
Co do tego co napisałeś to rozumiem, ale czy nie można jakoś zmodyfikować mojego wyrażenia, żeby po prostu od razu wyciągało to co trzeba i żeby się już nie bawić potem w dodatkowe wyciąganie tabel itp ? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 389 Pomógł: 141 Dołączył: 11.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
rozumiem ze z tych 3 chcesz link, tyt i aut to
Kod $wykonawca3 = '#<table class="poplista-toptable" .*>(.*)</table>#iU'; preg_match($wykonawca3, $nazwa, $wyk3); $wyk3reg = '#<a href="(/muzyka/biografia.*)">(.*)</a><br>(.*)  #iU'; preg_match_all($wyk3reg, $wyk3[0], $wyk4); for($i=0;$i<3;$i++) { echo $wyk4[1][$i] . ' ' .$wyk4[2][$i] . ' ' . $wyk4[3][$i]; echo '<br />'; } Na przyszłość rób bardziej szczegółowe wyr.reg. to będzie dobrze wyciągać. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 60 Pomógł: 0 Dołączył: 30.08.2010 Ostrzeżenie: (0%) ![]() ![]() |
Niestety nie działa.
Okazało się, że w międzyczasie stronka się zmieniła. Zmieniłem kod na taki:
$wy2 jest ok, ale $ty2 nie wiem dlaczego do tytułu dokleja taki ciąg:
W sumie można to już usunąć za pomocą preg_replace, ale dlaczego to w ogóle się dokleja i czy w ogóle się da to wyciągnąć od razu (bez doklejenia tych śmieci, innym wyrażeniem), czy jednak trzeba to jeszcze przeleciec preg_replace ? Ten post edytował nitro11 2.09.2010, 12:46:18 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 10:35 |