我正在尝试在以下正则表达式中匹配查询v
的值:
http:\/\/www\.domain\.com\/videos\/video.php\?.*v=([a-z0-9-_]+)
示例网址:
http://www.domain.com/videos/video.php?v=9Gu0sd2dmm91B9b1
网址始终是www,我只是想匹配v
值。有谁知道我的语法有什么问题?
答案 0 :(得分:2)
使用parse_url()
功能。这样更容易使用:
$url_components = parse_url("http://www.domain.com/videos/video.php?v=9Gu0sd2dmm91B9b1");
echo $url_components['query'];
从那里我认为你可以做其余的事情并切掉前几封信。一旦你这样做,你只剩下v=
之后的东西。
答案 1 :(得分:1)
http:\/\/www\.domain\.com\/videos\/video.php\?.*v=([a-zA-Z0-9-_]+)
答案 2 :(得分:0)
你没有逃避这个时期'。'在video.php中。如果我正在转义路径/ URL,我也会使用不同的分隔符 - 如下所示:
preg_match( "#http://www\.domain\.code/videos/video\.php\?.*v=([^&]*)#", $url, $matches );
如果v =在查询字符串的中间,
v=([^&]*)
..将匹配到另一个&符号,以防万一以外的字符和_, - 由于某种原因最终在那里。