preg_quote 问题在 Laravel 项目中

preg_quote issue in Laravel project

我正在 Laravel 的搜索功能中测试 preg_quote() 功能。我发现了一个奇怪的行为——“+”不是转义,而是从输出中移除。

preg_quote("a + b"); // "a b"

试图在没有 laravel 工作人员的情况下从 cli

调用相同的函数
php test.phpa // a \+ b

似乎 Laravel 对 function/output/something 产生了一些影响,否则...

Laravel 5.7. / php 7.3.1

I'm using postman to test. request: http://localhost:8000/api/users?skip=0&search=a + b function first line: dd(preg_quote($request->search));

正如我所怀疑的,这不是 PHP 或 Laravel 的问题,而是您的 URL 参数应该是 urlencoded。 (如果您通过 <form> 元素 GET,或者使用 Laravel 的内置 URL 构建器构建 URL,就会发生这种情况,但如果您要手动发送 Postman 请求,则由您决定。)

URL 查询字符串中的 + 对应于服务器上的 space。它必须转义为 %2B,像 # 这样的字符也必须转义。您可以通过 urlencode.

执行此操作

http://localhost:8000/api/users?skip=0&search=a%20%2B%20b