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