3

我想在查询字符串中传递 '&' 运算符。我尝试使用 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

4 回答 4

2

试试这个:

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

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

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

于 2012-04-19T06:31:15.217 回答
2

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

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

输出

A+%26+B
A & B

我猜你有另一个逻辑或语法错误导致你的 & 没有被正确解码,在你的代码中有一个撇号在你的 urldecode() 语法中。

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

于 2012-04-19T06:31:43.200 回答
0

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

$abc = $_GET['say'];
$abcd = urldecode($abc);
echo $abcd;
于 2012-04-19T06:41:25.930 回答
-1

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

试试这个:

$abc = "A & B";
<a href="hello.php?say=<?php echo htmlentities($abc); ?>"><?php echo $abc; ?></a>
于 2012-04-19T06:53:31.250 回答