我有$_GET['foo']="C# Programmer";
当我回复$_GET['foo']
时,它只打印 C
是解决此问题的任何方法
答案 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>
有关详情,请参阅urlencode。