Опять PHP — скрытая подмена понятий :)
<?
print_r ($_POST);
?>
<form method="POST">
<input name="через пробел">
<input type="submit">
</form>
Как вы думаете, что выведет print_r? Array ( [через пробел] => ) ? А вот и нифига!
Он выведет Array ( [через_пробел] => )
Вот такая зашитая фича. Для пробелов и точек.
Берется отсюда:
В файле main/php_variables.c, php_register_variable_ex
(92 строка для PHP 5.1.4):/* ensure that we don't have spaces or dots in the variable name (not binary
safe) */
for (p = var; *p; p++) {
if (*p == ' ' || *p == '.') {
*p='_';
} else if (*p == '[') {
is_array = 1;
ip = p;
*p = 0;
break;
}
}var_len = p — var;
Почему? Зачем? Не нашёл. Факт остаётся фактом. Нот бинари сейф, йоптыж.