- ベストアンサー
PHP4とPHP5のGETでの値引き渡し および & と & の使い分けについて
PHP4では、 http://mydomain/test.php?a=1&b=2 として、 test.php内で、 print "a=".$a.":"."b=".$b; のとき、 a=1:b=2 と表示していました。 PHP5に移行したところ、$_GETを使わないといけないということで、 print "a=".$_GET["a"].":"."b="._GET["b"]; としたところ、 a=1:b= となってしまい、bの値が取得できません。 そこで、 http://mydomain/test.php?a=1&b=2 ↓ http://mydomain/test.php?a=1&;b=2 つまり、 「&」の実体参照から「&」に変えると、 print "a=".$_GET["a"].":"."b="._GET["b"]; で a=1:b=2 と表示できます。 Another HTML-lintの解説では、&でなくてはいけないとかいてありますが、php5ではなぜ、&では$_GETに値を引き渡せないのでしょうか? (Another HTML-lintの解説) http://openlab.ring.gr.jp/k16/htmllint/explain.html#bad-entity ご存知の方が居られましたら、ご教示ください。 よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
お礼
なるほど。 本来、ブラウザが&を&として解釈しないということですね。 確かに値が取得できないケースでは、URL欄に&のまま残って いました。 &b=2 と渡した場合、$_GET['amp;b']とするお話し、参考に なりました。 URLデコードでなく、そのような対処法も可能なのですね。 私は、&を&に戻して対応したのですが、W3Cで構文チェックする と、&にしろ、と言われるので、少し混乱しました。 でもブラウザの問題を含めて考えると、現状が把握できたような 気がします。 とりあえず、構文に多少警告が出ても実用で動く方を採用しようと 思います。 ご回答ありがとうございました。