我有一个用户可以写任何东西的文本域.
例如:
Lorem Ipsum只是虚拟文本. http://www.youtube.com/watch?v=DUQi_R4SgWo 印刷和排版行业.自16世纪以来,Lorem Ipsum一直是业界标准的虚拟文本,当时一台未知的打印机采用了类型的厨房,并将其拼凑成一本类型的样本.它不仅存在了五个世纪,而且还延续了电子排版,基本保持不变. http://www.youtube.com/watch?v=A_6gNZCkajU&feature=relmfu 它在20世纪60年代推出了包含Lorem Ipsum段落的Letraset表格,最近还发布了包括Lorem Ipsum版本在内的Aldus PageMaker等桌面出版软件.
现在我想解析它并查找所有YouTube视频网址及其ID.
知道它是如何工作的吗?
我已经看了很多,我已经看到很多方法可以解析youtube的网址上的视频ID,但是,没有一个方法可以匹配YouTube网址所能提供的各种格式.我已经尝试过搞乱使用正则表达式在之前的帖子中,但似乎没有任何效果.
我发现最接近所有URL格式的帖子是这样的:如何使用正则表达式在字符串中找到所有YouTube视频ID?
但是,这不适用于:http: //www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/0/FJUvudQsKCM
我在Javascript中这样做.有人可以帮忙吗?!
Thanx提前.
我正在使用的当前URL格式和脚本:
var url = "http://www.youtube.com/sandalsResorts#p/c/54B8C800269D7C1B/0/FJUvudQsKCM";
//var url = "http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo";
//var url = "http://youtu.be/NLqAF9hrVbY";
//var url = "http://www.youtube.com/embed/NLqAF9hrVbY";
//var url = "https://www.youtube.com/embed/NLqAF9hrVbY";
//var url = "http://www.youtube.com/v/NLqAF9hrVbY?fs=1&hl=en_US";
//var url = "http://www.youtube.com/watch?v=NLqAF9hrVbY";
//var url = "http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo";
//var url = "http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I";
//var url = "http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo";
//var url = "http://www.youtube.com/watch?v=JYArUl0TzhA&feature=featured";
var videoID = url.match(/(?:youtu\.be\/|youtube\.com(?:\/embed\/|\/v\/|\/watch\?v=|\/user\/\S+|\/ytscreeningroom\?v=))([\w\-]{10,12})\b/)[1];
alert(videoID);
Run Code Online (Sandbox Code Playgroud) 我目前正在编写一个webapp,其中一些页面严重依赖于能够将正确的youtube视频拉入其中并进行播放.youtube URLS由用户提供,因此通常会带有变体,其中一个可能如下所示:
而另一个可能看起来像这样:
目前,我可以使用以下代码从后者中提取ID:
function get_youtube_video_id($video_id)
{
// Did we get a URL?
if ( FALSE !== filter_var( $video_id, FILTER_VALIDATE_URL ) )
{
// http://www.youtube.com/v/abcxyz123
if ( FALSE !== strpos( $video_id, '/v/' ) )
{
list( , $video_id ) = explode( '/v/', $video_id );
}
// http://www.youtube.com/watch?v=abcxyz123
else
{
$video_query = parse_url( $video_id, PHP_URL_QUERY );
parse_str( $video_query, $video_params );
$video_id = $video_params['v'];
}
}
return $video_id;
}
Run Code Online (Sandbox Code Playgroud)
如何处理使用?v版本而不是/v/版本的URL ?
只需要一点推动,因为我几乎可以工作.
我想为jquery提供一个URL,并让它除了视频网址之外.
这是我的代码:
var url = 'http://www.youtube.com/watch?v=bxp8NWvIeSo';
$results = url.match("[\\?&]v=([^&#]*)");
alert($results);
});
Run Code Online (Sandbox Code Playgroud)
我把它作为输出 -
?V = bxp8NWvIeSo,bxp8NWvIeSo
当我只想要的时候
bxp8NWvIeSo
我有这样的html
<iframe width="560" height="315" src="http://www.youtube.com/embed/Wa6CA3YqV2Q" frameborder="0" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)
如何Wa6CA3YqV2Q使用正则表达式获取视频 ID ?还有其他方法可以实现这一目标吗?
UPD:我使用过 Nokogiri,我设法获得http://www.youtube.com/embed/Wa6CA3YqV2Q了具有此链接的视频的 id,那么我如何获得 id?
如何仅从youtube的网址中获取视频ID?
例如,
有时URL会在'v'之后包含其他信息
http://www.youtube.com/watch?v=Z29MkJdMKqs&feature=grec_index
但我不想要其他信息,只是视频ID.
我只能想到使用爆炸,
$url = "http://www.youtube.com/watch?v=aPm3QVKlBJg";
$pieces = explode("v=", $url);
Run Code Online (Sandbox Code Playgroud)
但如何清理这样的URL?
http://www.youtube.com/watch?v=Z29MkJdMKqs&feature=grec_index
所以我有这个RSS文件,我正试图从中获取URL的一部分.所以这就是我尝试过的(这是行不通的).
我有这个网址,我可以轻松搞定:
http://www.youtube.com/watch?v=tUPjxGmh9i8&feature=youtube_gdata
Run Code Online (Sandbox Code Playgroud)
我试过$link = ltrim($link, 'http://www.youtube.com/watch?v=');在PHP和一个$link = rtrim($trim, '&feature=youtube_gdata');
它返回"UPjxGmh9i8".它切断了前面的"t".PHP.net文档页面对我来说并不是最容易阅读和解释的,但我假设ltrim()和rtrim()的第二个参数中的任何单个字符都被取出,这不是我想要的.是否有其他解决方案我可以用来只抓取我想要的文字?
任何帮助是极大的赞赏.
可能重复:正则
表达式解析youtube yid
你可能认为不是另一个,但在这里我有一个jquery正则表达式,我觉得它在大多数url上工作得很好在底部的一个例子:
http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index
http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
http://www.youtube.com/v/0zM3nApSvMg?fs=1&hl=en_US&rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s
http://www.youtube.com/embed/0zM3nApSvMg?rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg
http://youtu.be/0zM3nApSvMg
Run Code Online (Sandbox Code Playgroud)
正则表达式
/^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/
Run Code Online (Sandbox Code Playgroud)
但是这不能从下面的url中提取id(在这个例子中id是pa14VNsdSYM)
http://www.youtube.com/watch?feature=endscreen&NR=1&v=pa14VNsdSYM
Run Code Online (Sandbox Code Playgroud)
如何使用正则表达式我可以从网址中提取id,如上面的那个.
我现在使用这样的东西,但是我收到了很多错误......
$video_id = $_GET['url'];
$video_id = str_replace('http://www.youtube.com/watch?v=','',$video_id);
$video_id = str_replace('&feature=related','',$video_id);
$video_id = str_replace('&feature=fvwrel','',$video_id);
$video_id = str_replace('&hd=1','',$video_id);
$video_id = str_replace('&feature=relmfu','',$video_id);
$video_id = str_replace('&feature=channel_video_title','',$video_id);
$video_id = str_replace('&feature=list_related','',$video_id);
$video_id = str_replace('&playnext=1','',$video_id);
$video_id = str_replace('_player','',$video_id);
Run Code Online (Sandbox Code Playgroud)
问题是youtube有'&feature ='和其他人的多个url变量
我想从youtube网址中提取的唯一内容是唯一的视频ID
例如://www.youtube.com/watch?v = lgT1AidzRWM&feature = related
在id或之前没有任何内容
有人可以帮我搞定吗?
我正在尝试创建一个函数,该函数从Wordpress自定义字段调用值("_videourl"表示YouTube视频网址),然后使用PHP修剪将其缩小为YouTube视频ID.我发现了一个javascript函数,可以将URL减少到ID,但我不知道我怎么能将它转换成php(下面的函数):
function youtubeIDextract(url)
{
var youtube_id;
youtube_id = url.replace(/^[^v]+v.(.{11}).*/,"$1");
return youtube_id;
}
Run Code Online (Sandbox Code Playgroud)
这个PHP函数将在循环中使用,所以我想我必须使用变量,但我真的只是一个菜鸟,所以我不知道该怎么做.任何人都可以通过分享他们的编码专业知识来帮助我创建PHP函数吗?
编辑:解决
经过一些实验,我找到了解决方案.我想返回并发布它,以便其他有需要的人可以从某个地方开始.
function getYoutubeId($ytURL)
{
$urlData = parse_url($ytURL);
//echo '<br>'.$urlData["host"].'<br>';
if($urlData["host"] == 'www.youtube.com') // Check for valid youtube url
{
$ytvIDlen = 11; // This is the length of YouTube's video IDs
// The ID string starts after "v=", which is usually right after
// "youtube.com/watch?" in the URL
$idStarts = strpos($ytURL, "?v=");
// In case the "v=" is NOT right after the "?" (not …Run Code Online (Sandbox Code Playgroud)