我正在尝试使用preg_match解析youtube网址的视频ID.我在这个网站上找到了一个似乎有效的正则表达式;
(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+
Run Code Online (Sandbox Code Playgroud)
如图所示:

我的PHP如下,但它不起作用(给出未知修饰符'['错误)...
<?
$subject = "http://www.youtube.com/watch?v=z_AbfPXTKms&NR=1";
preg_match("(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+", $subject, $matches);
print "<pre>";
print_r($matches);
print "</pre>";
?>
Run Code Online (Sandbox Code Playgroud)
干杯
我写了一个ruby youtube url解析器.它被设计为输入以下结构之一的youtube网址(这些是我能找到的youtube url结构,也许还有更多?):
http://youtu.be/sGE4HMvDe-Q
http://www.youtube.com/watch?v=Lp7E973zozc&feature=relmfu
http://www.youtube.com/p/A0C3C1D163BE880A?hl=en_US&fs=1
Run Code Online (Sandbox Code Playgroud)
目的是只保存剪辑或播放列表的ID,以便它可以嵌入,所以如果它是一个剪辑: 'sGE4HMvDe-Q',或者它是一个播放列表: 'p/A0C3C1D163BE880A'
我写的解析器适用于这些网址,但似乎有点脆弱和冗长,我只是想知道是否有人可以建议一个更好的红宝石方法来解决这个问题?
def parse_youtube
a = url.split('//').last.split('/')
b = a.last.split('watch?v=').last.split('?').first.split('&').first
if a[1] == 'p'
url = "p/#{b}"
else
url = b
end
end
Run Code Online (Sandbox Code Playgroud) 我想从html代码中获取所有唯一的YouTube视频ID
查看youtube视频的(或多个)对象/嵌入代码
//来自数据库的html
<p>loremm ipsum dolor sit amet enot
<a href="link" attribute=""blah blah blah">anchor link</a>
</p>
<object width="425" height="344">
<param name="movie" value="http://www.youtube.com/v/Ou5eVl5eqtg&hl=es_ES&fs=1&"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/Ou5eVl5eqtg&hl=es_ES&fs=1&"
type="application/x-shockwave-flash"
allowscriptaccess="always"
allowfullscreen="true"
width="425"
height="344">
</embed>
</object>
<image src="path/to/image.ext" >
<p>lorem ipsum dolor sit amet... blah</p>
<p>lorem ipsum dolor sit amet... blah</p>
<object width="425" height="344">
<param name="movie" value="http://www.youtube.com/v/Ou5eVl5eqtg&hl=es_ES&fs=1&"></param>
<param name="allowFullScreen" value="true"></param>
<param name="allowscriptaccess" value="always"></param>
<embed src="http://www.youtube.com/v/Ou5eVl5eqtg&hl=es_ES&fs=1&"
type="application/x-shockwave-flash"
allowscriptaccess="always"
allowfullscreen="true"
width="425"
height="344">
</embed>
</object>
<p>blah</p>
blah<br/>
blah<br/>
blah<br/>
Run Code Online (Sandbox Code Playgroud)