tags:

views:

186

answers:

3

Basicaly the title say's it all. i had an hidden input on my page where i wanted to set the name to "some.major.uber.setting"

for example: <input type="hidden" name="some.major.uber.setting" value="dummy value" />

and when i looked at the $_POST data it contained "some_major_uber_setting". Can anybody explain this behaviour

+13  A: 

That is probably a relict from register_global = On times. $_GET/$_POST variables were turned into standard variables ($_GET['foo'] became $foo). Variable names can't contain dots so they were internally converted.

halfdan
+5  A: 

Its documented in php.net as:

Dots and spaces in variable names are converted to underscores.

codaddict
The OP knows that - it is stated as part of the question, which is "Why?"
David Dorward
+6  A: 

This has been there since the original commit to CVS, more than 10 years ago.

It has a comment:

/* ensure that we don't have spaces or dots in the variable name (not binary safe) */

I have no idea why it isn't "binary safe"... You'd have to ask Zeev.

Artefacto
http://en.wikipedia.org/wiki/Binary_safe
Michael Mior
@Michael I know that, but `.` and ` ` certainly don't fit that definition.
Artefacto
Why not? `.` is a PHP operator.
Michael Mior
that code is hilarious
stereofrog