Параметр поискового запроса - PullRequest
0 голосов
/ 27 сентября 2019

Я хочу найти электронную почту, которая содержит «+».например что-то вроде этого myemail.subdomain+1@domain.com.

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

Я использую Laravel, этот параметр выбирается из маршрута с использованием $request->get('searchKey');, но он преобразует '+' в '', в результате я получаю searchKey как myemail.subdomain 1@

, что приводит к неправильному результату.Любая помощь?

1 Ответ

2 голосов
/ 27 сентября 2019

PHP предполагает, что + из запроса GET является пробелом.Правильный кодированный символ плюс - %2B.Вы должны просто подготовить строку из запроса на сохранение символа плюс:

$searchKey= urlencode(request()->get('searchKey'));

В вашем случае вы получите @ как %40.Затем вы можете заменить плюс на правильный код и расшифровать его. Но тогда будьте осторожны с обычными пробелами!

$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

PS Полагаю, это не самое лучшее средство, но онодолжно работать.

PPS Или, если вы можете подготовить плюс как %2B, прежде чем он будет в параметре поиска, сделайте это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...