如果向PHP页面传递带有“&”符号的参数怎么办?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果向PHP页面传递带有“&”符号的参数怎么办?相关的知识,希望对你有一定的参考价值。
例如:
有一个文件是123.php,我要向它传递一个参数url=http://www.456.com/?a=a&b=b&c=c
如果我这样写123.php?url=http://www.456.com/?a=a&b=b&c=c
则echo $_GET["url"]的结果会是http://www.456.com?a=a
因为有个“&”符号,系统把它判断为了是要传给123.php的参数,于是造成了url值的错误。
请问在上述的情况下,如何把后面的b=b&c=c同前面的网址一起完整地传到url中?
使用 urlencode()
$str = 'http://www.456.com/?a=a&b=b&c=c';
$encoded= urlencode($str);
echo $encoded;
接收到之后使用 urldecode()
$decode = urldecode($encoded);
echo "\n<br>";
echo $decode;
方法2:
使用base64_encode() 加密
使用base64_decode() 解密
但是get方法传递的数据有255字节的长度限制,所以这个方法会在数据量大时失效 参考技术B <a href="123.php?url=<?=rawurlencode("http://www.456.com/?a=a&b=b&c=c")?>">跳转</a>
然后$_GET['url']就是http://www.456.com/?a=a&b=b&c=c,并不需要rawurldecode来解码,HTTP协议会自动解码
理论上,所有链接的参数包括中文都应该用rawurlencode进行编码,就不会出现你所说的问题了 参考技术C
"&"符号参数传递过去一般是指的url多项传值
举例:
header("location:abc.php?id=3&name=$name&age=$age");
那么在跳转的abc.php页面就可以用get方式接收传递的参数
$id = $_GET['id'];
$name= $_GET['name'];
$age= $_GET['age'];
就好比当前我们这个提问的页面,我截图给你
这里的entry和ishq就是带的两个参数而已,接收方式就用get
比如传递字符串 r&b
你可以写 ?str=r%26b
OK吗?本回答被提问者采纳 第5个回答 2009-05-21 编码——》传递--》解码
如何使PHP程序执行页面跳转时传递大量参数
有时候一个页面需要上一个页面的多个参数通过页面定向header("Location: aaa.php?argument1=$argument1&argument2=$argument2&................);
以及超链接echo \'<a href="aaa.php?argument=\'.$argument.\'"></a>\';的方式传递参数可能就不太方便了
以下提供一个可供参考的实现方法:
//a.php
<?php
//制作参数数组
$arr_arg=array($a,$b,$c,...........................);
//使用implode函数将数组桥接成一个字符串
$arg=implode(\'-\',$arr_arg);
//定向到b.php
hearder(\'Location: b.php?arg=\'.$arg);
?>
//b.php
<?php
//接受从a.php传递过来的参数,并用explode函数进行拆解,至此便可以再次以数字索引数组的形式访问每个参数
$arg=explode(\'-\',$_GET[\'arg\']);
echo \'<pre>\';
print_r($arg);
echo \'</pre>\';
?> 参考技术A 用POST传 理论上没上限 但服务器会对post设置上限标准
以上是关于如果向PHP页面传递带有“&”符号的参数怎么办?的主要内容,如果未能解决你的问题,请参考以下文章