为什么 (点)和空格在PHP $ _GET数组中更改为_(下划线)? [关闭]

In PHP documentation I found following part:

Dots and spaces in variable names are converted to underscores. For example <input name="a.b" /> becomes $_REQUEST["a_b"].

I'm aware that while PHP couldn't make variable $a.b for register_globals, but this explanation doesn't make me fully happy. While indeed, register_globals would have to do it (or, even if wouldn't have because of ${'a.b'}), but why it affected global variables like $_GET where technically you had to give string since beginning (so PHP programmers couldn't forgot about ${'a.b'} sort of stuff in case of $_GET).

And why it only affects dots and spaces? While I can understand dots (<input type=image>), why it would affect spaces. And what about hyphens?