我正在开设parkos网站,客户可以通过电子邮件进行预订,但有些客户在电子邮件中使用加号。
例如:
test+parkos@gmail.com
现在,如果客户想看到他们的预订,我正在网址中创建一个获取请求,你会得到这样的结果:
http://test.com/reservations/?email=test+parkos@gmail.com&number=GH76G
之后,我正在尝试检索电子邮件并回复它:
$email = request()->input('email');
{{!! $email!!}}
如果我尝试在我的网页上查看这是我得到的:
test parkos@gmail.com
+符号消失了,我想知道是否有办法保留+号。
答案 0 :(得分:2)
网址错误,因为根据CGI标准,+符号有其自己的含义。它意味着一个空白。
正确的网址
http://test.com/reservations/?email=test%2Bparkos@gmail.com&number=GH76G
中所述+ becomes %2B
space becomes %20
为了避免进一步的错误,最佳做法是在使用URL之前编码文本,如下所示:
$url = "http://" . $domain . "/whatever.php?text=" . urlencode($text);
答案 1 :(得分:0)
发送已解码的网址并获取$ _GET ['email']
urlencode('test+email@gmail.com');
答案 2 :(得分:0)
空格字符在application / x-www-form-urlencoded键值对中编码为“+”。
RFC-1866(HTML 2.0规范),第8.2.1段。第1小节说:“表格字段名称和值被转义:空格字符被替换为'+',然后保留字符被转义”。
因此,在解码URL时,将脉冲解码回空间。例如,在您的网址中。
如果使用PHP构造此URL,请在每个键/值对上调用urlencode(),不要连接未编码的字符串。
http://test.com/reservations/?email=test+parkos@gmail.com&number=GH76G
电子邮件将成为
test parkos@gmail.com
要防止它,请确保URL中的“+”字符是正确的百分比编码,因此正确的URL应如下所示:
http://test.com/reservations/?email=test%2Bparkos@gmail.com&number=GH76G