1

有没有办法缩短 php 的rawurlencode的结果 放置在链接中时相当长,例如 website.php?='rawurlencoderesult' 我希望能够缩短链接,但仍保留完整的解码结果。编码很长,因为它包含一个加密值。

有没有办法在 PHP 中本地执行此操作。提前致谢。

4

2 回答 2

2

我猜你的加密算法会生成很多在 URL 中被禁止的字符(也就是说,它输出一个二进制字符串)。在对它们进行 URL 编码之后,它们的大小基本上是原来的三倍,因为每个非法字符都被替换为%xx代码。

为避免这种情况,您需要先将加密的值字符串转换为 URL 允许的字符范围,即0123456789abcdefghijklmnopqrstuvwxyz-_.~.

做到这一点的一种方法 - 尽管效率低下 - 是使用bin2hex()(并hex2bin()转换回来)。最好使用使用上述所有字符的转换函数,但目前我无法为您指出一个。

于 2012-09-28T09:21:41.090 回答
0

您可以通过以下方式回答您的第一个问题:

“编码很长,因为它包含一个加密值。”

有很多半复杂的方式来保持这个服务器端,它有点取决于你的链接的使用。就我个人而言,我会保持原样,或者通过 AJAX 将“rawurlencoderesult”的值存储在变量中,然后将其保存在会话变量中或数据库中。

于 2012-09-28T08:18:03.097 回答