38

我正在尝试通过百分比 (%) 登录网址,例如

%B6011000995504101^SB

但是当我回显时,它会返回

♦011000995504101^SB

我想要与在 URL 中传递的完全相同的值。

我曾尝试使用 urlencode() 函数,但它给了我这样的输出......

%B6011000995504101%5ESB

请帮我解决这个问题

4

2 回答 2

74

回答:

%在 url 中发送登录信息,请改为发送%25.

在您的情况下,为了让 php 看到百分号,您必须将字符串传递%25B6011000995504101^SB给服务器。

为什么:

在 URL 中,百分号具有特殊含义。用于编码特殊字符。例如,&是参数之间的分隔符,因此如果您希望参数实际包含一个&,则改为编写%26. 因为百分号是用来编码特殊字符的,它也是一个特殊字符,所以如果你想真正发送一个百分号,它也必须被编码。百分号的编码是%25.

于 2013-06-27T12:09:29.803 回答
5

在 URL 中包含原始字符串之前,最好通过 urlencode 传递它,如下所示:

<?php
$original='%B6011000995504101^SB';

$updated=urlencode($original);

echo "<a href=\"some_page.php?$updated\">Link here</a>";
?>

接收页面会知道该怎么做——在你的网络服务器上试试这个例子:

<?php

if($_GET['argument']) {
    echo "<p>You passed in the argument &quot;$_GET[argument]&quot;</p>";
}else {
    echo "<p>No argument was passed.</p>";
}
$original='%B6011000995504101^SB';

$updated=urlencode($original);

echo "<a href=\"urlencode.php?argument=$updated\">Link here</a>";
?>

(将文件命名为urlencode.php

于 2013-06-27T12:10:18.347 回答