首先,我想说我知道有很多相关的问题,但在尝试了这些主题中给出的解决方案后,我仍然有一些对我的代码不起作用的东西..
我需要一个正则表达式来从这种特定类型的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/'检查了这些模式,它们似乎有效,但我收到第一个模式的空结果字符串,而第二个模式我得到一个未知的修饰符'['错误。如果我把模式放在'#'之间,我得到空字符串结果。
有关所显示代码有什么问题的任何想法?请帮助我,我非常绝望!
答案 0 :(得分:1)
你的模式周围需要PHP正则表达式分隔符,这可能会导致你的错误。但是你的解析要求是什么?如果您只是想要获取视频ID,为什么不在最后的斜杠后捕获所有字符? <{1}}会在您的示例中为/\/([^\/]*)$/
返回B3-Bn4aUXTY
。
答案 1 :(得分:1)
如何获得最后一部分的简单explode
呢?
public function retrieveUserVideo($data) {
$parts = explode('/', $data);
return end($parts);
}