我要搜索其中包含“ +”的电子邮件。例如
像这样的myemail.subdomain+1@domain.com
。
URL-https://example.com?searchKey=myemail.subdomain+1@
我正在使用Laravel,此参数是使用
$request->get('searchKey');
但它会将“ +”转换为“”,
结果我得到了
searchKey为myemail.subdomain 1@
这会导致不正确的结果。 有帮助吗?
答案 0 :(得分:2)
PHP假定GET请求中的+
是一个空格。正确编码的加号为%2B
。
您只需要根据请求准备字符串即可保存加号:
$searchKey= urlencode(request()->get('searchKey'));
在您的情况下,您将获得@
作为%40
。然后,您可以用正确的代码替换plus并将其解码。 但是请留意通常的空格!
$searchKey = urlencode(request()->get('searchKey'));
$searchKey = urldecode(str_replace('+', '%2B', $searchKey));
https://www.php.net/manual/en/function.urlencode.php https://www.php.net/manual/en/function.urldecode.php
P.S。我想这不是最好的解决方案,但应该可以。
P.P.S。或者,如果您可以在搜索参数之前将加号准备为%2B
,请这样做