laravel - 搜索查询参数
问题描述
我想搜索其中包含“+”的电子邮件。例如像这样的东西myemail.subdomain+1@domain.com
。
网址 -https://example.com?searchKey=myemail.subdomain+1@
我正在使用 Laravel,这个参数是从路由中获取的,
$request->get('searchKey');
但它正在将 '+' 转换为 ' ' ,因此我得到 searchKey 为myemail.subdomain 1@
从而导致不正确的结果。有什么帮助吗?
解决方案
PHP 假定+
来自 GET 请求是一个空格。右编码的加号是%2B
. 您只需从请求中准备字符串即可保存加号:
$searchKey= urlencode(request()->get('searchKey'));
在你的情况下,你会得到@
as %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
在搜索参数之前将 plus 准备好,请执行此操作
推荐阅读
- ruby-on-rails - Rails - 多种价格类型的产品数据库模型
- firebase - FlutterFire - 如果 Firestore 查询“result.exist”在有结果时返回 true,那么如果没有结果,返回值是多少?
- c# - 将 UI 画布同步到光子网络 | PunRPC
- three.js - 带有三个.js 的音频分析器
- python - csv 模块:有序字典操作?
- java - 在运行行为测试之前插入事件以获得所需的状态
- azure - 更新快照位置 Velero Azure
- php - Laravel 6.2/docker/docker-compose phpunit 在本地环境中运行而不是测试
- mysql - 给定 MariaDb 查询中的年份、月份和星期,如何获取一周中第一天的月份日期?
- javascript - flex:1 隐藏