私はによって送信された文字列を持っています$_GET['foo']="C# Programmer";
エコーすると、 C$_GET['foo']
のみが出力されます
文字列コンテナ # またはその他のシンボルが $_GET によって送信される場合、この問題を解決する方法はあります
私はによって送信された文字列を持っています$_GET['foo']="C# Programmer";
エコーすると、 C$_GET['foo']
のみが出力されます
文字列コンテナ # またはその他のシンボルが $_GET によって送信される場合、この問題を解決する方法はあります
スペースとハッシュ ( #
) は HTTP URL では無効であり、パラメーター値で使用する場合はエンコードする必要があります。を使用urlencode()
して、URL セーフなパラメーター値を作成できます。
以下が機能するはずです。
foo=C%23%20Programmer
GET
別のページからリクエストを送信しようとしている場合は、次のようにする必要があります。
<?php
$var = 'C# Programmer';
?>
<a href="select.php?foo=<?php echo urlencode($var) ?>"> Go </a>
では、select.php
を実行しようとするとecho $_GET['foo'];
、 が表示されますC# Programmer
。
この種の値を渡すには urlencode などの関数を使用し、この値を取得するには urldecode を使用します。post
この種の問題を回避する方法を利用してみてください
-_ を除くすべての英数字以外の文字を含む文字列を返す urlencode という名前の関数を使用する必要があります。パーセント (%) 記号に置き換えられ、その後に 2 つの 16 進数とプラス (+) 記号としてエンコードされたスペースが続きます。
<?php
$var = 'C# Programmer';
?> <!-- end of PHP code -->
<a href="select.php?foo=
<?php echo urlencode($var) ?> <!-- start and end of PHP code -->
"> Go </a>
詳細については、urlencodeについてお読みください。