YouTube的embed代码有两种,一种是iframe的,一种是object的,无论哪种,相对于YouTube视频地址来说,都比较长,如果允许用户直接输入视频地址就可以播放视频,最好不过。自己写的程序中需要通过获取YouTube视频ID获取YouTube Embed代码,WordPress则内置了视频地址和embed代码转换的功能——oembed。
目录
通过正则表达式获取YouTube Embed代码
比如我要获取下面这个视频地址的Embed代码,这首歌很好听滴。
http://www.youtube.com/watch?v=KRlOLZ0H4ck&feature=related
$url = 'http://www.youtube.com/watch?v=KRlOLZ0H4ck&feature=related'; preg_match("/v=([^&]+)/i", $url, $matches); $id = $matches[1]; //获取视频ID //输出iframe类型的embed代码 echo '<iframe width="640" height="480" src="http://www.youtube.com/embed/'.$id.'" frameborder="0" allowfullscreen></iframe>';
iframe代码看起来更简洁,但百度经常对iframe表现敌意,至少在百度的SEO建议中是这样,那就选用YouTube的传统Embed方式,代码如下
$url = 'http://www.youtube.com/watch?v=KRlOLZ0H4ck&feature=related'; preg_match("/v=([^&]+)/i", $url, $matches); $id = $matches[1]; //获取视频ID echo '<object width="640" height="480"> <param name="movie" value="http://www.youtube.com/v/' . $id . '?version=3&hl=en_US"></param> <param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param> <embed src="http://www.youtube.com/v/' . $id . '?version=3&hl=en_US" type="application/x-shockwave-flash" width="640" height="480" allowscriptaccess="always" allowfullscreen="true"></embed></object>';
在WordPress中如何实现
WordPress中实现上述功能更加简单,只要利用oembed就可以。
什么是oembed?
首先打开设置->媒体,找到自动嵌入功能,勾选即可开启oembed功能。
这时如果在Post或者Page编辑器中输入YouTube视频地址,就可以自动转换成embed代码。如下所示
编辑器中的内容
实际查看的效果
oembed的强大之处
强悍之一
支持多个视频网站,包括(详情请参阅Codex: oembed)
- YouTube (only public videos and playlists – “unlisted” and “private” videos will not embed)
- Vimeo
- DailyMotion
- blip.tv
- Flickr (both videos and images)
- Viddler
- Hulu
- Qik
- Revision3
- Scribd
- Photobucket
- PollDaddy
- WordPress.tv (only VideoPress-type videos for the time being)
- SmugMug (WordPress 3.0+)
- FunnyOrDie.com (WordPress 3.0+)
- Twitter (WordPress 3.4+)
强悍之二
可以轻松增加视频网站,只需要使用函数wp_oembed_add_provider()
wp_oembed_add_provider( $format, $provider, $regex );
强悍之三
如果oembed只能用于post或者page,似乎还有些美中不足。其实oembed在摘要或自定义字段(custom fields)中同样可以工作,自定义数据表中存储的url也可以被转换。
例如,自定义数据表,表中有一个字段存储了视频url,只需要三行代码就可以转换成相应的embed代码
$url = 'http://www.youtube.com/watch?v=KRlOLZ0H4ck&feature=related'; //转换代码 require_once( ABSPATH . WPINC . '/class-oembed.php' ); $oembed = _wp_oembed_get_object(); echo $oembed->get_html($url);
用这种方式,不仅可以转换YouTube,还能转换其它支持的视频网站url,不用再去想用户到底填了哪个视频网站的url。
结语
将YouTube地址转换为embed代码推荐使用oembed的方式,一则,当YouTube embed代码更新时,WordPress也会更新oembed,不用担心客户的网站无法正常转换视频。而来,oembed是一个开源的PHP Class,也就是说任何PHP系统都可以使用oembed转换地址,非常方便。
如果对oembed感兴趣,可以阅读一下http://oembed.com/
参考网站
如何修改oembed中的HTML代码格式
《How to modify the HTML formatting of an oEmbed link?》
如何判断视频地址是否被oembed支持
《Is there a built in function to see if a URLis oEmbed Compatible?》
通过oembed获取视频缩略图