【问题标题】:Regular expression to parse YouTube embedded code解析 YouTube 嵌入代码的正则表达式
【发布时间】:2010-03-10 12:20:46
【问题描述】:

如何获取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>

【问题讨论】:

  • 给定样本的结果应该是什么?
  • 我假设您问的是如何从嵌入代码中收集视频 URL,然后您就可以用它来做您想做的事,对吧?
  • P Daddy,当谈到自动生成的 youtube 嵌入代码时,我想可以肯定地说其中的所有内容都是可以预测的,所以不会有任何意外,因此可以解析
  • 只要您准备好随时在 youtube 上进行更改。

标签: php regex facebook youtube fbml


【解决方案1】:

前几天我不得不这样做。这是我编写的一个函数,用于在字符串/输入中获取剪辑 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;
}

【讨论】:

    【解决方案2】:

    据我所知,您希望从嵌入式代码中收集视频 URL,然后您就可以做您想做的事并得到您想要的任何东西。

    假设整个嵌入代码(源代码和值)中只有两个 URL,并且 URL(至少不是 YouTube)中没有引号,我用来获取 URL 的正则表达式是:

    [^(src=")]http.*[^"]
    

    解释:http 没有以 'src="' 开头,直到出现引用。

    【讨论】:

      猜你喜欢
      • 2011-02-05
      • 2013-01-03
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多