REGEX:从URL中提取参数

时间:2012-02-12 16:46:08

标签: regex

我应该使用什么REGEX从url字符串中提取以下参数:

/?c=135&a=1341

我基本上想从此字符串中获取a参数的值。

谢谢,

2 个答案:

答案 0 :(得分:1)

如果要提取a的值,并且该值由一位到多位数组成,则此正则表达式应该有效:

preg_match("/a=(\\d{1,})/ui", $_SERVER['REQUEST_URI'], $matches)

然后使用$matches[1]显示a

答案 1 :(得分:1)

我将回答一个稍微更一般的Q,这是你的建议吗?您尝试从URI请求字符串中删除特定参数的前缀(这会丢弃前导?)。在这种情况下,使用mod_rewrite引擎,以便您可以在.htaccess文件中实现它。

规则稍微复杂一些,因为你不一定知道查询参数a = XXX中的位置,所以你需要不同的正则表达式,其中a是第一个,a是后续参数。你可以通过((?=a=)regexp1|regexp2)执行此操作,所以这里是:

 RewriteEngine on
 RewriteBase   \
 RewriteCond   %{QUERY_STRING} ^(?(?=a=)a=[^&]*&?(.*)|(.*)&a=[^&]*(&.*)?)
 RewriteRule   ^.*             $0?%1%2%3                        [L]

如果a是第一个%1包含休息,否则%2和%3是书挡(%3可能是空白的)。

如果您希望特定脚本出现这种情况,请将规则regexp ^.*替换为更具体的脚本。

享受:-)