kyle
kyle

Reputation: 13

regex part of url

So I'm trying to get the id from a url for youtube..

here is the url

http://gdata.youtube.com/feeds/api/videos/kffacxfA7G4/related?v=2

then there's also - in the url too.

it wouldn't let me post another url but it's the same as above but with the id ucvkO0x-mL4

how can I grab between videos/ and /related (the id) with regex?

I tried to use txt2re.com which is what I always use, but it's not working for this case..

thanks!

Upvotes: 1

Views: 320

Answers (4)

shamittomar
shamittomar

Reputation: 46692

No need for even regex, just a simple strpos and substr will do it. Or just use explode like this:

<?php

$url = 'http://gdata.youtube.com/feeds/api/videos/kffacxfA7G4/related?v=2';

//BY STRPOS/SUBSTR
echo substr($url, 42, strpos($url, '/related', 42) - 42);

//BY EXPLODE
$parts = explode('/', $url);
echo $parts[6];
?>

Upvotes: 3

sberry
sberry

Reputation: 131978

This is how I would do it

$url = 'http://gdata.youtube.com/feeds/api/videos/kffacxfA7G4/related?v=2';
preg_match('#.*videos/([0-9a-zA-Z_\-]{11})/related.*#', $url, $matches);
print_r($matches);

But, @shamittomar is right about strpos and substr

Upvotes: 1

Jrubins
Jrubins

Reputation: 249

using regex you can do it by

$url = "http://gdata.youtube.com/feeds/api/videos/kffacxfA7G4/related?v=2";

preg_match('/videos\/(.+)\/related/',$url,$match);

$id = $match[1];

Upvotes: 0

jerluc
jerluc

Reputation: 4316

(?:.*)videos/(.*?)/related\?v=2

Upvotes: 1

Related Questions