我有一个字符串发送$_GET['foo']="C# Programmer";
当我回显时$_GET['foo']
,它只打印C
当字符串容器 # 或其他符号由 $_GET 发送时,有什么方法可以解决这个问题
我有一个字符串发送$_GET['foo']="C# Programmer";
当我回显时$_GET['foo']
,它只打印C
当字符串容器 # 或其他符号由 $_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 的函数,它返回一个字符串,其中除了 -_ 之外的所有非字母数字字符。已替换为百分号 (%) 后跟两个十六进制数字和编码为加号 (+) 的空格。
<?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。