ホームページ >バックエンド開発 >PHPチュートリアル >PHP が GET、POST、COOKIE 変数名のドットをアンダースコアに置き換えないようにするにはどうすればよいですか?

PHP が GET、POST、COOKIE 変数名のドットをアンダースコアに置き換えないようにするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-11 01:59:09816ブラウズ

How Can I Prevent PHP from Replacing Dots with Underscores in GET, POST, and COOKIE Variable Names?

PHP: GET、POST、COOKIE 名の文字置換を防止する

PHP は、受信変数名のドットを自動的にアンダースコアに置き換えます。この動作は場合によっては望ましくない場合があります。どうすれば無効にできますか?

PHP がドットを置き換える理由

PHP.net によると、ドットは変数名で有効な文字ではありません。パーサーは、「varname.ext」を、「varname」という名前の変数の後に連結演算子と文字列「ext」が続いたものとして解釈しますが、これは意図した結果ではありません。

Alternatives

この動作を防止しようとしているにもかかわらず、PHP の解析メカニズムにより、この動作が必要になります。ただし、これを回避する方法があります:

  • POST 変数: POST 変数にアクセスする前に、str_replace を使用してアンダースコアをドットに置き換えます:
$_POST['x.y'] = str_replace('_', '.', $_POST['x_y']);
  • GET と COOKIE変数: PHP がリクエストを解析する前に、.htaccess ファイルでグローバル変数置換パターンを使用してアンダースコアをドットに置き換えます:
RewriteEngine On
RewriteRule .* - [E=DOT:_]

以上がPHP が GET、POST、COOKIE 変数名のドットをアンダースコアに置き換えないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。