用于解析YouTube嵌入式代码的正则表达式

时间:2010-03-10 12:20:47

标签: php regex facebook youtube fbml

如何使用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>

2 个答案:

答案 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,直到有引号。