accessing $arg_PARAMETER for parameter with . in it

Maxim Dounin mdounin at
Wed Jul 11 19:14:45 UTC 2012


On Wed, Jul 11, 2012 at 01:39:19AM -0400, bluesmoon wrote:

> Hi,
> I have a query string parameter that has a dot in it.  For example,
> `a.b`.  I need to write this parameter to my log file.  How do I
> reference it?
> I've tried `$arg_a.b` but that prints `-.b` (ie, it prints the value of
> $arg_a which is - followed by .b)
> I've also tried `$arg_a_b` but that just prints `-` since there is no
> parameter a_b or a-b.
> What should I do?

The $arg_* variables won't allow you to access request arguments with 
characters not allowed in variable names.

If you really need to, you may parse $args yourself, e.g. with 
map{} directive using regular expressions.  Something like this 
should work:

    map $args $ab {
        "~(?:^|[&;])a[.]b=(?<foo>[^&;]*)"  $foo;

Maxim Dounin

More information about the nginx mailing list