【发布时间】:2019-03-04 02:22:05
【问题描述】:
我正在 Laravel 的搜索功能中测试 preg_quote() 功能。我发现了一个奇怪的行为——“+”不是转义,而是从输出中删除。
preg_quote("a + b"); // "a b"
尝试在没有 laravel 人员的情况下从 cli 调用相同的函数
php test.phpa // a \+ b
似乎 Laravel 对功能/输出/其他东西产生了一些影响......
Laravel 5.7。 / php 7.3.1
【问题讨论】:
-
你能告诉我们你的搜索功能,你如何输出它,以及到哪里? URL 中的
+符号是生成的$_GET参数中的一个空格,需要编码为%2B。 -
我正在使用邮递员进行测试。请求:
http://localhost:8000/api/users?skip=0&search=a + b函数第一行:dd(preg_quote($request->search));主要问题是“+”是唯一一个没有转义的特殊字符。我已经用函数文档中所有特殊字符的字符串进行了测试。 -
@ceejayoz 这个请求
. \ + * ? [ ^ ] $ ( ) { } = ! < > | : -我有这个输出`\。 \\ * \? [ \^ ] \$ ( ) \{ \} \= \! \ \| \: \- ` - 一切都被转义,“+”被忽略/删除。
标签: php laravel preg-quote