Php 带有';%的拉维尔路线';特殊字符

Php 带有';%的拉维尔路线';特殊字符,php,laravel,Php,Laravel,我有一条路线是: Route::get('/busca-de-produtos/{produto?}', ['as' => 'busca-de-produto', 'uses' => 'ProdutoController@buscaProdutos'])->where('produto', '(.*)'); 这几乎适用于所有内容,但如果我搜索“某个产品的文本增加2%”,它就不起作用了 我试着换成: Route::get('/busca-de-produtos/{produto

我有一条路线是:

Route::get('/busca-de-produtos/{produto?}', ['as' => 'busca-de-produto', 'uses' => 'ProdutoController@buscaProdutos'])->where('produto', '(.*)');
这几乎适用于所有内容,但如果我搜索“某个产品的文本增加2%”,它就不起作用了

我试着换成:

Route::get('/busca-de-produtos/{produto?}', ['as' => 'busca-de-produto', 'uses' => 'ProdutoController@buscaProdutos'])->where('produto', '((?s).*)');

但效果不太好。有什么我可以做的吗?

在进行搜索时,您可能没有正确编码URL。 您的URL应该如下所示
/busca de produtos/Some%20Product%202%25%20more%20text


另外,如果您接受produto的
*
,我认为您可以安全地完全删除
->where()
过滤器。

在执行搜索时,您可能没有正确编码URL。 您的URL应该如下所示
/busca de produtos/Some%20Product%202%25%20more%20text


另外,如果您接受produto的
*
,我认为您可以安全地完全删除
->where()
过滤器。

否,产品名称上有“%”,当我搜索数据库时,我需要搜索包含此字符的内容。这不是编码URL的问题。你能发布你得到的错误,以及一些你如何进行搜索的代码示例吗?这是一个400错误,它没有击中控制器。那是我的问题。路由需要接受“%”才能命中控制器。我明白了,您是否尝试从路由中删除
->where()
筛选器,并在web浏览器中打开我在回答中编写的URL?只要正确编码,%字符是转义字符,Laravel就没有理由不接受它,这就是为什么它不能使用它的原因。此外,在你的URL中使用空格也不是很好的做法,比如说有人复制粘贴了链接,看起来像是“example.com/some words here”,但所有软件都只会高亮显示并使其在第一个空格前可点击-“example.com/some”否,产品名称上有“%”,当我搜索数据库时,我需要搜索包含此字符的数据库。这不是编码URL的问题。你能发布你得到的错误,以及一些你如何进行搜索的代码示例吗?这是一个400错误,它没有击中控制器。那是我的问题。路由需要接受“%”才能命中控制器。我明白了,您是否尝试从路由中删除
->where()
筛选器,并在web浏览器中打开我在回答中编写的URL?只要正确编码,%字符是转义字符,Laravel就没有理由不接受它,这就是为什么它不能使用它的原因。此外,在URL中使用空格也不是很好的做法,比如说有人复制粘贴了链接,看起来像是“example.com/some words here”,但所有软件都只会高亮显示并使其在第一个空格前可点击-“example.com/some”