传递与传播在查询字符串中

时间:2012-04-19 06:24:10

标签: php

我想通过'&'查询字符串中的运算符我试图使用urlencode和urldecode 但它不起作用。我这样做:

$abc="A & B";
$abc2=urlencode($abc);

然后我传递的值就像这样

<a href="hello.php?say=<?php echo $abc2 ?>"><?php echo $abc;?></a>

并在下一页获得价值

$abc=$_GET['say'];
$abcd=urldecode($abc');
echo $abcd;

但输出不是A & B

我做错了什么?

4 个答案:

答案 0 :(得分:2)

试试这个:

$url = '?' . http_build_query(array(
  'say' => 'A & B'
));

// Then just:
echo $_GET['say'];

实例:http://codepad.viper-7.com/ibH79a?say=A+%26+B

答案 1 :(得分:2)

基本上它应该可行我在网络服务器上尝试了以下内容:

$a = 'A & B';
echo urlencode($a);
echo '<br />';
echo urldecode(urlencode($a));

输出

A+%26+B
A & B

我猜你还有另一个逻辑或语法错误导致你的&amp;不能正确解码,在你的代码中你的urldecode()中有一个叛逆者 - 语法。

这是您的所有代码还是使用“类似”代码?你原来的代码会很有用。

答案 2 :(得分:0)

您似乎在以下代码的第2行的$ abc旁边添加了单引号:

$abc = $_GET['say'];
$abcd = urldecode($abc);
echo $abcd;

答案 3 :(得分:-1)

&安培;是一个特殊的HTML字符,您需要将其转换为&amp;

试试这个:

$abc = "A & B";
<a href="hello.php?say=<?php echo htmlentities($abc); ?>"><?php echo $abc; ?></a>