[PHP]Wyciąganie ciągu znaków z URL


(nowyyy31) #1

Witam

mam małe pytanie jak mogę wyciągnąć tylko ID filmów

z YouTube żeby wyciągnąć ten ciąg znaków a-NZIGes3j0

http://antyklerycow.wrzuta.pl/film/04s6 ... z_3_pietra

z Wrzuta żeby wciągnąć tylko ten ciąg znaków 04s6a6Bh95F

jak to zrobić...?


(Ghoost11) #2

Poczytaj o funkcji explode()

http://pl.php.net/explode

Dajesz np. "/" za rozdzielnik, a później wystarczy zrzucić do zmiennej wartość tablicy o wybranym indeksie.


(Anddezr+Dobreprogramy Pl) #3

Przydatne mogę też być http://pl.php.net/manual/en/function.parse-str.php, http://pl.php.net/manual/en/function.parse-url.php


(nowyyy31) #4

na YouTube już działa...

<?

// YouTube!!

echo 'YouTube';

echo '

';

$url = 'http://www.youtube.com/watch?v=a-NZIGes3j0';



preg_match('/v=([a-zA-Z0-9_-]+)/i', $url , $ciag);

$idfilmu=$ciag[1];

echo $idfilmu;

echo '



';



print_r(parse_url($url));

echo parse_url($url, PHP_URL_PATH);

echo '



';


parse_str($url, $output);

echo $output['url'][1];

echo '



';

$ciąg = 'http://www.youtube.com/watch?v=a-NZIGes3j0';

$równa_się = strrpos($ciąg,'=');

$id = substr($ciąg,$równa_się+1);

echo $id;

?>

na Wrzuta jeszcze coś nie gra...

<?

// Wrzuta!!

echo '

';

echo 'Wrzuta';

echo '

';

$adres = 'http://antyklerycow.wrzuta.pl/film/04s6a6Bh95F/skok_do_basenu_z_3_pietra';

preg_match('|film\/([^/][a-zA-Z0-9_-]+)|i', $adres , $ciag);

$idfilmu=$ciag[1];

?>

(Sitemaster) #5

Co nie gra? A tak na marginesie, wystarczy

preg_match('|film\/([^/]+)|i', $adres , $ciag);

:wink:


(etam) #6

albo można też

preg_match('|film/(.+?)/|', $adres , $ciag);

Uwaga! '/' trzeba escapować (czyli pisać stawiać '\' przed nim) tylko gdy regexpa zaczyna się i kończy znakiem '/'. Dlatego w przykładzie podanym przez api po "film" nie powinno być '\'. ---- Youtuba można trochę zoptymalizować:

preg_match('/v=(.{11})/', $url , $ciag);

Poza tym: flaga 'i' (za regexpem np '/bla/i') oznacza "incase sensitive" czyli nie zwraca uwagi na małe/wielki litery.