Skocz do zawartości

[php] obcięcie tekstu


gnysek

Rekomendowane odpowiedzi

  • Administratorzy

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

  • Administratorzy

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

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

  • Administratorzy

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

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

  • Administratorzy

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...