在url中获取值

时间:2010-08-09 05:18:34

标签: php

我需要在网址中获取值

例如:

http://www.example.com/index?url= 1 + LY2ePh1pjX4tjZ4 + GS393Y2pjd16Cbq63T3tbfzMzd16CarA ==

但是vriable url给我的值“1 LY2ePh1pjX4tjZ4 GS393Y2pjd16Cbq63T3tbfzMzd16CarA ==”

即使我预期“1 + LY2ePh1pjX4tjZ4 + GS393Y2pjd16Cbq63T3tbfzMzd16CarA ==”

任何人都可以帮助我或知道原因

6 个答案:

答案 0 :(得分:2)

您可以看到,如果需要在URL中发送某些字符,则需要对其进行编码。如需进一步参考,我建议您阅读此Page。您似乎没有正确编码您获得的URL。如果网址来自您的网站,那么我建议您对其进行正确编码。

在PHP中,有function名为urlencode,可以帮助您完成此任务。

简短说明

网址只能通过互联网使用ASCII字符集发送。如果要发送超出此设置的字符,则需要对其进行编码.URL编码用%后跟两个十六进制数字替换不安全的ASCII字符对应于ISO-8859-1 character-set

中的字符值

答案 1 :(得分:0)

发送请求的客户端显然不是正确编码值的URL。您可以在解码后对其进行重新编码,如下所示:

urlencode($_GET["url"])

答案 2 :(得分:0)

IT将%2B 转换为空格

答案 3 :(得分:0)

您发送的参数错误,应该按照这样编码。

<?php
    echo '<a href="http://www.example.com/index?url=', urlencode('1+LY2ePh1pjX4tjZ4+GS393Y2pjd16Cbq63T3tbfzMzd16CarA=='), '">';
?>

答案 4 :(得分:0)

我现在正确添加了编码,它正确地转换==,但正确地+符号编码到%2B但在解码过程中它转换为空格

答案 5 :(得分:0)

由于您似乎在那里拥有Base-64值:您可以使用使用-_代替+和{{URL safe alphabet for Base-64的{{3}} 1}}分别:

/

如果你知道数据的长度,你也可以省略$base64 = "1+LY2ePh1pjX4tjZ4+GS393Y2pjd16Cbq63T3tbfzMzd16CarA=="; // plain Base-64 to URL safe Base-64 $base64_safe = strtr($base64, '+/', '-_'); // URL safe Base-64 to plain Base-64 $base64 = strtr($base64_safe, '-_', '+/'); 填充:

=