如果向PHP页面传递带有“&”符号的参数怎么办?

例如:有一个文件是123.php,我要向它传递一个参数url=http://www.456.com/?a=a&b=b&c=c如果我这样写123.php?url=http:... 例如:

有一个文件是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中?
展开
 我来答
reficull
2009-05-21 · TA获得超过661个赞
知道小有建树答主
回答量:522
采纳率:0%
帮助的人:344万
展开全部
方法1:

使用 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字节的长度限制,所以这个方法会在数据量大时失效
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
everalan
2009-05-21 · TA获得超过1820个赞
知道大有可为答主
回答量:799
采纳率:0%
帮助的人:1457万
展开全部
<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进行编码,就不会出现你所说的问题了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
有范er的小青年
推荐于2016-08-05 · TA获得超过866个赞
知道小有建树答主
回答量:806
采纳率:20%
帮助的人:268万
展开全部

"&"符号参数传递过去一般是指的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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
songyuemiao
2009-05-21 · TA获得超过2405个赞
知道大有可为答主
回答量:1305
采纳率:0%
帮助的人:1053万
展开全部
& 号 可以用 %26 转义

比如传递字符串 r&b
你可以写 ?str=r%26b

OK吗?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
孤单棒棒糖
2009-05-21 · TA获得超过1544个赞
知道小有建树答主
回答量:1295
采纳率:0%
帮助的人:0
展开全部
编码——》传递--》解码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式