$ _GET没有打印掉#符号和文字

时间:2013-09-30 15:21:10

标签: php

我有$_GET['foo']="C# Programmer";

发送的字符串

当我回复$_GET['foo']时,它只打印 C

当字符串容器#或其他符号由$ _GET

发送时,

是解决此问题的任何方法

3 个答案:

答案 0 :(得分:2)

空格和散列(#)在HTTP URL中无效,如果要在参数值中使用它,则需要对其进行编码。您可以使用urlencode()创建网址安全的参数值。

以下内容应该有效:

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

答案 1 :(得分:1)

利用urlencode等函数传递这种值,并使用urldecode获取此值。尝试使用post方法来避免此类问题

答案 2 :(得分:1)

你应该使用名为urlencode的函数,该函数返回一个字符串,其中除了-_之外的所有非字母数字字符。已被替换为百分号(%)后跟两个十六进制数字和空格编码为加号(+)。

<?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>

Live example

有关详情,请参阅urlencode