URL GET参数中的队列空间

时间:2013-01-26 08:07:17

标签: php url get

当我有这样的网址时

site.com/index.php?name=JON%20%20%20%20%20%20%20SMIT

我在index.php文件中打印$_GET['name']变量,结果为Jon Smit

即,JON和SMIT之间的队列空间在一个空格上被替换。为什么会这样?

3 个答案:

答案 0 :(得分:2)

HTML会忽略无关的空白,因此无论您在名称中放置多少空格,当它在浏览器中输出时,浏览器只会显示一个空格。您需要用 (不间断空格)替换空格,以确保浏览器全部显示它们。

答案 1 :(得分:1)

这应该保留空格:

print rawurldecode($_GET['name']);

这将打印额外的空格,但是您的浏览器可能会忽略额外的空格。 Documentation

答案 2 :(得分:1)

如何定义URL中特殊字符(如空格)的编码,另请参阅Wiki。您可以通过urlencode进行网址编码,反之亦然urldecode

仅关于ONE Space:在Firefox中查看页面的来源(即HTML代码),例如通过Ctrl + U,会有更多的空格。但是:浏览器只显示其中一个。如果要在输出中保留它们,可以使用类似

的内容
echo '<pre>' . $_GET['name'] . '</pre>';

OR

echo str_replace(' ', '&nbsp;', $_GET['name']);