正则表达式捕获查询字符串中的变量

时间:2012-11-16 12:32:21

标签: php regex

我想获取两个字符之间的网址的特定部分,例如在下面的链接中我希望获得v=&之间的部分。

 
http://www.youtube.com/watch?v=mof-Dq3hvWs&feature=youtu.be

我使用以下正则表达式(?<=v=)(.*?)(?=&)

执行此操作

我的问题是链接没有以&结尾。例如:

http://www.youtube.com/watch?v=5FlQSQuv_mg

如何在两种情况下匹配字符串?

2 个答案:

答案 0 :(得分:5)

不要使用正则表达式。使用parse_url()parse_str()

$url = 'http://www.youtube.com/watch?v=mof-Dq3hvWs&feature=youtu.be';
$parts = parse_url($url);
parse_str($parts['query'], $arr);
print_r($arr);

答案 1 :(得分:0)

那么呢?

(?<=v=)([^&]+)