如何使用正则表达式匹配php中的URL?

时间:2012-05-18 04:57:24

标签: php regex

我正在尝试在以下正则表达式中匹配查询v的值:

http:\/\/www\.domain\.com\/videos\/video.php\?.*v=([a-z0-9-_]+)

示例网址:

http://www.domain.com/videos/video.php?v=9Gu0sd2dmm91B9b1

网址始终是www,我只是想匹配v值。有谁知道我的语法有什么问题?

3 个答案:

答案 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=([^&]*)

..将匹配到另一个&符号,以防万一以外的字符和_, - 由于某种原因最终在那里。