我需要在网址中获取值
例如:
http://www.example.com/index?url=的 1 + LY2ePh1pjX4tjZ4 + GS393Y2pjd16Cbq63T3tbfzMzd16CarA ==
但是vriable url给我的值“1 LY2ePh1pjX4tjZ4 GS393Y2pjd16Cbq63T3tbfzMzd16CarA ==”
即使我预期“1 + LY2ePh1pjX4tjZ4 + GS393Y2pjd16Cbq63T3tbfzMzd16CarA ==”
任何人都可以帮助我或知道原因
答案 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, '-_', '+/');
填充:
=