Post
Topic
Board Service Announcements
Re: [Announce] YouTube Video Links on your Items
by
mcorlett
on 01/08/2012, 18:59:13 UTC
click the pencil to edit an item and put in the ID of the YouTube video (not the entire URL)
I'm sure you will figure out the right regexp to extract the ID so you don't have to rely on the user to extract it Wink
I arrived at this:
Code:
/(?<=(?:v|i)=)[a-zA-Z0-9-]+(?=&)|(?<=(?:v|i)\/)[^&\n]+|(?<=embed\/)[^"&\n]+|(?<=(?:v|i)=)[^&\n]+|(?<=youtu.be\/)[^&\n]+/

Testing:
$urls = array(
    
'',
    
'youtube.com/v/dQw4w9WgXcQ',
    
'youtube.com/vi/dQw4w9WgXcQ',
    
'youtube.com/?v=dQw4w9WgXcQ',
    
'youtube.com/?vi=dQw4w9WgXcQ',
    
'youtube.com/watch?v=dQw4w9WgXcQ',
    
'youtube.com/watch?vi=dQw4w9WgXcQ',
    
'youtu.be/dQw4w9WgXcQ',
);

foreach (
$urls as $url) {
    
preg_match('/(?<=(?:v|i)=)[a-zA-Z0-9-]+(?=&)|(?<=(?:v|i)\/)[^&\n]+|(?<=embed\/)[^"&\n]+|(?<=(?:v|i)=)[^&\n]+|(?<=youtu.be\/)[^&\n]+/'$url$matches);
    
print_r($matches);
}

Works for all of 'em:
Code:
Array
(
    [0] => dQw4w9WgXcQ
)
Array
(
    [0] => dQw4w9WgXcQ
)
Array
(
    [0] => dQw4w9WgXcQ
)
Array
(
    [0] => dQw4w9WgXcQ
)
Array
(
    [0] => dQw4w9WgXcQ
)
Array
(
    [0] => dQw4w9WgXcQ
)
Array
(
    [0] => dQw4w9WgXcQ
)
Array
(
    [0] => dQw4w9WgXcQ
)