How do I get the YouTube video ID from a URL?
You don't need to use a regular expression for this.
var video_id = window.location.search.split('v=')[1];
var ampersandPosition = video_id.indexOf('&');
if(ampersandPosition != -1) {
video_id = video_id.substring(0, ampersandPosition);
}
Get youtube id for all url types
Your regex appears to solve the problem as it stands now? I didn't try it in php, but it appears to work fine in my editor.
The first part of the regex http://(?:www\.)?youtu\.?be(?:\.com)?/
matches http://youtu.be/
and the second part (embed/|watch\?v=|\?v=|v/|e/|.+/|watch.*v=|)
ends with |)
which means it matches nothing (making it optional). In other words it would trim away http://youtu.be/
leaving only the id.
A more intuitive way of writing it would be to make the whole if grouping optional I suppose, but as far as I can tell your regex is already solving your problem:
#http://(?:www\.)?youtu\.?be(?:\.com)?/(embed/|watch\?v=|\?v=|v/|e/|.+/|watch.*v=)?#i
Note: Your regex would work with the www.youtu.be.com
domain as well. It would be stripped away, but something to watch out for if you use this for validating input.
Update:
If you want to only match urls inside [youtube][/youtube]
tags you could use look arounds.
Something along the lines of:
(?<=\[youtube\])(?:http://(?:www\.)?youtu\.?be(?:\.com)?/(?:embed/|watch\?v=|\?v=|v/|e/|[^\[]+/|watch.*v=)?)(?=.+\[/youtube\])
You could further refine it by making the .+
in the look ahead only match valid URL characters etc.
How to parse the video ID from new YouTube URLs
^(?:https?:\/\/)?(?:www\.)?(?:youtu\.be\/|youtube\.com\/(?:embed\/|v\/|watch\?v=|watch\?.+&v=|attribution_link\?a=.+?watch.+?v(?:%|=)))((\w|-){11})(?:\S+)?$
Try this.Added attribution_link\?a=
for the newer urls.See demo.
http://regex101.com/r/yZ7qJ6/5
Parsing Youtube URLs
You regex is not correct.
The correct regex would be like this:
var re = /(?:https?:\/\/)?(?:youtu\.be\/|(?:www\.)?youtube\.com\/watch(?:\.php)?\?[^ ]*v=)([a-zA-Z0-9\-_]+)/g;
var str = 'https://www.youtube.com/watch?v=OovKTBO4aQs jiberish https://www.youtube.com/watch?v=DOQsYk8cbnE jiberish a https://www.youtube.com/watch?v=97aiSGxmizg'console.log(str.match(re))
How can I extract video ID from YouTube's link in Python?
Python has a library for parsing URLs.
import urlparse
url_data = urlparse.urlparse("http://www.youtube.com/watch?v=z_AbfPXTKms&NR=1")
query = urlparse.parse_qs(url_data.query)
video = query["v"][0]
Related Topics
Laravel: Where to Store Global Arrays Data and Constants
Create Programmatically a Product Using Crud Methods in Woocommerce 3
Should I Be Using Assert in My PHP Code
How to Convert MySQL Time to Unix Timestamp Using PHP
PHP Float with 2 Decimal Places: .00
Write CSV to File Without Enclosures in PHP
How to Check If a MySQL Table Exists with PHP
Using Scandir() to Find Folders in a Directory (Php)
Php/MySQL Zip Code Proximity Search
Linux - PHP 7.0 and Mssql (Microsoft SQL)
PHP - How to Send an Array to Another Page
Laravel Eager Loading - Load Only Specific Columns
Differencebetween Redirect and Forward in Zend Framework
Change Innerhtml of a PHP Domelement