如果向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中?

参考技术A 方法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字节的长度限制,所以这个方法会在数据量大时失效
参考技术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

参考技术D & 号 可以用 %26 转义

比如传递字符串 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页面传递带有“&”符号的参数怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

php向js的函数内传递参数-用经纬度计算2点间距离

微信小程序怎么向外部php文件传递参数

我在php页面定义了一个数组,现在想点击一个按钮,把数组里的内容出力到文件,怎

两个html的页面之间怎么传递参数啊

springmvc 页面怎么向字符串数组传参

php curl 模拟post表单向提交数据