このようなURLがある場合
site.com/index.php?name=JON%20%20%20%20%20%20%20SMIT
$_GET['name']
変数を index.php ファイルに出力すると、結果はJon Smit
.
つまり、JON と SMIT の間のキュー スペースが 1 つのスペースに置き換えられます。なぜこれが起こったのですか?
HTML は不要な空白を無視するため、名前にスペースをいくつ入れても、ブラウザーに出力すると、ブラウザーにはスペースが 1 つしか表示されません。
ブラウザーにすべてのスペースが表示されるようにするには、スペースを (改行しないスペース) に置き換える必要があります。
これにより、スペースが保持されます。
print rawurldecode($_GET['name']);
これにより余分なスペースが出力されますが、ブラウザは余分なスペースを無視する場合があります。 ドキュメンテーション
特殊文字 (スペースなど) が URL でエンコードされる方法が定義されています。Wiki も参照してください。urlencodeを介して URL エンコードできます。その逆はurldecode です。
1 つのスペースのみについて: ページのソース (つまり、HTML コード) を調べます。Firefox では、Ctrl+U などを使用すると、さらに多くのスペースが存在します。BUT: ブラウザにはそのうちの 1 つしか表示されません。それらを出力に保持したい場合は、次のようなものを使用できます
echo '<pre>' . $_GET['name'] . '</pre>';
また
echo str_replace(' ', ' ', $_GET['name']);