0

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

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

示例网址:

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

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

4

3 回答 3

2

使用该parse_url()功能。它更容易使用:

$url_components = parse_url("http://www.domain.com/videos/video.php?v=9Gu0sd2dmm91B9b1");

echo $url_components['query'];

从那里我认为你可以做剩下的事情并切掉前几个字母。一旦你这样做了,你就只剩下v=.

于 2012-05-18T05:00:28.357 回答
1

你忘记了大写字母

http:\/\/www\.domain\.com\/videos\/video.php\?.*v=([a-zA-Z0-9-_]+)
于 2012-05-18T05:00:32.803 回答
0

你没有逃避句号“。” 在 video.php 中。如果我要转义路径/URL,我也会使用不同的分隔符 - 如下所示:

preg_match( "#http://www\.domain\.code/videos/video\.php\?.*v=([^&]*)#", $url, $matches );

如果 v= 在查询字符串的中间,

v=([^&]*)

.. 会将所有内容与另一个 & 符号匹配,以防字母和 _ 以外的字符,- 由于某种原因最终出现在其中。

于 2012-05-18T05:03:09.807 回答