搜索查询参数

时间:2019-09-27 07:35:00

标签: laravel search routes

我要搜索其中包含“ +”的电子邮件。例如 像这样的myemail.subdomain+1@domain.com

URL-https://example.com?searchKey=myemail.subdomain+1@

我正在使用Laravel,此参数是使用 $request->get('searchKey'); 但它会将“ +”转换为“”, 结果我得到了 searchKey为myemail.subdomain 1@

这会导致不正确的结果。 有帮助吗?

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,请这样做