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 参数应该是 urlencode
d。 (如果您通过 <form>
元素 GET
,或者使用 Laravel 的内置 URL 构建器构建 URL,就会发生这种情况,但如果您要手动发送 Postman 请求,则由您决定。)
URL 查询字符串中的 +
对应于服务器上的 space。它必须转义为 %2B
,像 #
这样的字符也必须转义。您可以通过 urlencode
.
执行此操作
http://localhost:8000/api/users?skip=0&search=a%20%2B%20b
我正在 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 参数应该是 urlencode
d。 (如果您通过 <form>
元素 GET
,或者使用 Laravel 的内置 URL 构建器构建 URL,就会发生这种情况,但如果您要手动发送 Postman 请求,则由您决定。)
URL 查询字符串中的 +
对应于服务器上的 space。它必须转义为 %2B
,像 #
这样的字符也必须转义。您可以通过 urlencode
.
http://localhost:8000/api/users?skip=0&search=a%20%2B%20b