それなりブログ

とあるWebエンジニアのそれなりのブログ、JavaScript/Node.js/Python/PHP/ゲーム作成 など

[PHP] 入力フォームのname属性に”.”を入れると”_”に置換されている

タイトルの通りなんですが
以下のようなtest.phpの出力する決定ボタンを押した場合のvar_dumpの出力が

<html>
<body>
<form action="./test.php" method="post">
<input type="text" name="A.B...-C" />
<input type="submit" value="Submit!" />
</form>
<?php
var_dump($_POST);
?>
</body>
</html>

こうなるっちゅー話です

// "."が"_"へ置換されている
array(1) {
["A_B___-C"]=>
string(0) ""
}

今まで知らなかったです。

なお、PHPは5.2.5で、自分でソースから入れた奴です。
・・・どこの仕様なんだろう?


4 Responses to “[PHP] 入力フォームのname属性に”.”を入れると”_”に置換されている”

  • Pasela より:

    マニュアル上からはその辺の仕様を見つけることはできなかった。
    のでソースコードから。
    5.2.6だけどmain/php_variables.cの92行目がそれっぽい。
    /* ensure that we don’t have spaces or dots in the variable name (not binary safe) */
    ここで置き換えてるね。
    ちなみに$_SERVER[‘QUERY_STRING’]やfile_get_contents(‘php://input’)では変換されずに入ってる。当然だけど。

  • kjirou より:

    どうもどうも
    すげぇありがとうっす、PHPの仕様なのかー。
    スペースとドットは他の文字で代替が利くなら、
    使わない方が混乱しなくていいかもですね。
    てか、Cも読めるんすか・・・。

  • Pasela より:

    初めて覚えた言語がCなんだぜ。
    ソース読む前にperlで試したらそんな変な変換してなかったので、こりゃあPHPが勝手にやってるに違いないと思った次第。
    つか、初めてPHP触った時はname=”hoge[]”とかすると勝手に配列にしてくれるのに驚いたもんだ。

  • kjirou より:

    にゃるほどう
    生命の起源はCからって言われますもんねー
    そういや
    “hoge[]”が配列ってのもPHPがやってんのか


コメントを残す

メールアドレスが公開されることはありません。

Categories

Archives