如何使用YouTube提供的YouTube嵌入式代码并使用正则表达式将其转换为有效的FBML代码,即使用fb:swf
代码?
到目前为止,我提出的正则表达式是:
preg_replace('/<object(.*)<\/object>/i', "Whatever I need here...", $str);
我知道这很蹩脚,但这是我第一次尝试。
PS:YouTube嵌入式代码示例
<object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/NWHfY_lvKIQ&hl=en_GB&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/NWHfY_lvKIQ&hl=en_GB&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"></embed></object>
答案 0 :(得分:0)
前几天我不得不这样做。这是我编写的一个函数,用于在字符串/输入中获取剪辑id并将它们放入一个数组中(可以插入到嵌入对象中):
preg_match_all('/\/vi?\/([A-Za-z0-9\+_-]+)/i', $str_containing_yt_ids, $yt_ids);
然后
print_r($yt_ids);
如果您需要动态获取标题:
function get_yt_title($clip_id){
$feedURL = 'http://gdata.youtube.com/feeds/api/videos/' . $clip_id;
$entry = simplexml_load_file($feedURL);
$video= new stdClass;
$media = $entry->children('http://search.yahoo.com/mrss/');
$video->title = ucwords(strtolower($media->group->title));
return $video->title;
}
答案 1 :(得分:-2)
据我所知,你想从嵌入式代码中收集视频网址,然后你就可以随心所欲地获得你想要的东西了。
假设整个嵌入代码中只有两个URL(源和值),并且URL中没有引号(至少不是YouTube),我用来获取URL的正则表达式为:
[^(src=")]http.*[^"]
说明:'src =“'没有预先设定http
,直到有引号。