使用“www.youtube/user/”-type Url提取youtube vid的正则表达式

时间:2011-01-17 18:01:09

标签: php regex youtube

首先,我想说我知道有很多相关的问题,但在尝试了这些主题中给出的解决方案后,我仍然有一些对我的代码不起作用的东西..

我需要一个正则表达式来从这种特定类型的Url中提取youtube vid:

http://www.youtube.com/user/thedailyenglishshow#p/u/0/B3-Bn4aUXTY

我使用的PHP代码和模式如下所示:

public function retrieveUserVideo($data) {

  $url = $data;
  $pattern = '/[^\/]+$/';
  //$pattern = '(?<=v=)[a-zA-Z0-9-]+(?=&)|(?<=[0-9]/)[^&\n]+|(?<=v=)[^&\n]+';
  preg_match($pattern, $url, $matches);
  $result = $matches[1];

  return $result;
 }

我已经在'http://gskinner.com/RegExr/'检查了这些模式,它们似乎有效,但我收到第一个模式的空结果字符串,而第二个模式我得到一个未知的修饰符'['错误。如果我把模式放在'#'之间,我得到空字符串结果。

有关所显示代码有什么问题的任何想法?请帮助我,我非常绝望!

2 个答案:

答案 0 :(得分:1)

你的模式周围需要PHP正则表达式分隔符,这可能会导致你的错误。但是你的解析要求是什么?如果您只是想要获取视频ID,为什么不在最后的斜杠后捕获所有字符? <{1}}会在您的示例中为/\/([^\/]*)$/返回B3-Bn4aUXTY

答案 1 :(得分:1)

如何获得最后一部分的简单explode呢?

public function retrieveUserVideo($data) {
    $parts = explode('/', $data);
    return end($parts);
}