[top-think/think]url()生成的地址里有空格的话,用Request::param() 接收参数的时候空格会变成+号

2023-12-20 596 views
1

tp5.1

$url=url('/demo',['a'=>'a a++a']); 在pathinfo的模式下生成路由: /demo/a/a++a%2B%2Ba.html; 然后使用 Request::param("a");获取参数会变成 :a++a++a

空格会变成+号,输不出空格。怎么解决啊?

回答

5

这个原因是tp在构建url时用的是 urlencode 编码,把空格转为加号。这也导致了在新url地址下,$_SERVER['PATH_INFO'] 的值是 /demo/a/a+a++a.html

解决这个问题的话可以自行用rawurencode 方式进行编码。或者干脆将上面构建好的url地址替换+号: $url = str_replace('+', '%20', $url); 两者编码方式就只有对空格的处理方式不一样而已。

3

设置 url_common_param 为true 使用普通模式传参就不会有类似的问题