Administratorzy gnysek Opublikowano 30 Czerwca 2008 Administratorzy Udostępnij Opublikowano 30 Czerwca 2008 Siedzę nad tym od paru godzin i nie mam pomysłu. Słaby jestem z wyrażeń regularnych, może dla tego. Wiec tak. Mamy sobie taką oto stronę: http://www.gametrailers.com/player/35570.html Za pomocą kodu $plik = file_get_contents('http://www.gametrailers.com/player/35570.html'); pobieram do zmiennej tą stronę. I teraz potrzebuję z kodu: <a href="/game/5383.html" class="media_gametitle" style="display: block;">Prototype</a> Pobrać tylko 5383 (zakładamy, że mogą tam być dowolne liczby) A potem z linku <a href="http://www.gametrailers.com/download/35570/t_prototype_int1_powercombat_gt.mov">Quicktime - 26.1MB</a> Pobrać tylko t_prototype_int1_powercombat_gt. Resztę strony można wywalić, nie jest do niczego potrzebna. Dla uproszenia zakładamy, że linki wygladają tak: <a href="/game/00000.html" class="media_gametitle" style="display: block;">AAAAA</a> <a href="http://www.gametrailers.com/download/35570/XXXXX.mov">Quicktime - BBBBB</a> Pobgrubione rzeczy są mi potrzebne, reszta strony nie jest do niczego potrzebna. Macie jakieś pomysły? Ja siedzę od trzech godzin nad preg_replace i owszem, zamieniam te linki, ale nie wiem jak do zmiennej zwrócić tylko ten tekst który pozostanie, a nie całość. Umiem linki zamienić na sam tekst, nie umiem pozbyć się reszty poza nimi. Na koniec link powinien wyglądać tak http://trailers.gametrailers.com/gt_vault/00000/XXXXXX.flv Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kryniak Opublikowano 30 Czerwca 2008 Udostępnij Opublikowano 30 Czerwca 2008 Może będzie lepiej jak użyjesz modułu PHP DOM XML =). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 30 Czerwca 2008 Autor Administratorzy Udostępnij Opublikowano 30 Czerwca 2008 Nie wiem, musiał bym poczytać :P Na razie mam: $pattern = "#<a href=\"\/game\/(.*?).html\" class=\"media_gametitle\" style=\"display: block;\">#i"; echo preg_replace($pattern,'<div style="font-size: 100px;">$1</DIV>',$plik); i zamienia jak trza, ale nie umiem się pozbyć tego co przed i za :/ Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Firemark Opublikowano 30 Czerwca 2008 Udostępnij Opublikowano 30 Czerwca 2008 daj po prostu specjalnie znaki , które nie są w dokumencie (mozesz dać to jako <FRAJER>$1 i splitować... wyciągasz $split[0] i gotowe pewnie są lepsze funkcje [chyba preg_replace_callback] , ale nie wiem... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 1 Lipca 2008 Udostępnij Opublikowano 1 Lipca 2008 No nie wiem tylko jak się te linki zmieniają, ale: <?php $link1 = '<a href="/game/00000.html" class="media_gametitle" style="display: block;">AAAAA</a>'; $link2 = '<a href="http://www.gametrailers.com/download/35570/t_prototype_int1_powercombat_gt.mov">Quicktime - 26.1MB</a>'; $val1 = false; if( preg_match( '/href="\/game\/([0-9]*).html"/is', $link1, $match ) ) { $val1 = (int) $match[1]; } $val2 = false; if( preg_match( '/href="(.*)\/([a-z0-9_]*).mov"/is', $link2, $match ) ) { $val2 = $match[2]; } if( $val1 !== false && $val2 !== false ) { echo 'http://trailers.gametrailers.com/gt_vault/' . $val1 . '/' . $val2 . '.flv'; } ?> I działa też tak: <?php $data = file_get_contents('http://www.gametrailers.com/player/35570.html'); $val1 = false; if( preg_match( '/href="\/game\/([0-9]*).html"/is', $data, $match ) ) { $val1 = (int) $match[1]; } $val2 = false; if( preg_match( '/href="(.*)\/([a-z0-9_]*).mov"/is', $data, $match ) ) { $val2 = $match[2]; } if( $val1 !== false && $val2 !== false ) { echo 'http://trailers.gametrailers.com/gt_vault/' . $val1 . '/' . $val2 . '.flv'; } ?> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Lipca 2008 Autor Administratorzy Udostępnij Opublikowano 1 Lipca 2008 No całe szczęście jak byłeś potrzebny to się znalazłeś :P Myślę, że będzie ok, bo właśnie nie wiedziałem jak zwrócić sobie ten zmieniony fragment - bo nie rozumiałem za bardzo funkcji preg_match. Edit: działa. Teraz wystarczy wejśc na gametrailers, wziąść jakiś filmik w formacie SD np. ze strony głównej, skopiować link i mamy już wersję Flash, którą można do własnego playera dać :) Znalazłem też plik w którym są zapisywane pokrewne media, więc można zaszaleć sobie :P Na tej samej zasadzie wyciąga się linki do youtube, gdzie niezbędny jest parametr T, który nie wiadomo na jakiej podstwie jest tworzony i ma ważnośc jakieś 15 minut, więc za każdym pobraniem filmu trzeba w ten sam sposób pobrać ID filmu, parametr T i wtedy można do skryptu który zwraca FLV (get_video.php bodaj). Kumple w pracy to odkryli, ale oni piszą w .NET więc z php musiałem radzić sobie sam :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Tymon Opublikowano 1 Lipca 2008 Udostępnij Opublikowano 1 Lipca 2008 W sumie preg_match to tak jak preg_replace, tylko że zamiast operować na $1, $2... dostajesz wszystko w tablicy, a kolejne elementy pasujące do wzorca jako kolejne indeksy tablicy. =P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Administratorzy gnysek Opublikowano 1 Lipca 2008 Autor Administratorzy Udostępnij Opublikowano 1 Lipca 2008 Nom i własnie tego potrzebowałem - żeby mi zwracało tylko zamienioną część, a nie całość z zamienioną częścią :P Ale jak człowiek uzywa ciągle tych samych funkcji to potem coś nowego stanowi problem :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się