Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 链接中有%字符的Symfony2问题_Php_Symfony_Routing - Fatal编程技术网

Php 链接中有%字符的Symfony2问题

Php 链接中有%字符的Symfony2问题,php,symfony,routing,Php,Symfony,Routing,我对symfony22.4的url中的%字符有点奇怪的问题 网址是: /测试/检查/dq9L1oAOh2dDRLn3wmFW6wyHRfgCjRF%2FCELMCWOPIYEULDO3LUJ8IN3LHFYZHZHCWWCQGWQFJ1APSAJUXAZ8E/ 路线是: test_check: pattern: /test/check/{id}/ defaults: { _controller: TestSiteBundle:Test:Check} 如果我从url中删除%

我对symfony22.4的url中的%字符有点奇怪的问题

网址是: /测试/检查/dq9L1oAOh2dDRLn3wmFW6wyHRfgCjRF%2FCELMCWOPIYEULDO3LUJ8IN3LHFYZHZHCWWCQGWQFJ1APSAJUXAZ8E/

路线是:

test_check:

    pattern:  /test/check/{id}/

    defaults: { _controller: TestSiteBundle:Test:Check}
如果我从url中删除%字符,它将工作,如果我将其保留在url中,它将返回404

我还补充说:

requirements:

    id: .+
但是,如果页面还包含GET参数,并且url为:

/测试/检查/dq9L1oAOh2dDRLn3wmFW6wyHRfgCjRF%2FCELMCWOPIYEULDO3LUJ8IN3LHFYZHZHCWWCQGWQFJ1APSAJUXAZ8E/?val=正确,测试=是

然后,id的值将为DQ9L1OAOH2DDRN3WMFW6WYHRFGCJRF%2FCELMCWOPIYULDO3DLUJ8IN3LHFYZHZHCWWCQGWQFJ1APSAJUXAZ8E/?val=true&test=yes

有没有最佳实践的想法

我知道我可以将param留在路由中,在/处分解字符串,并将好的字符串放在数组中,因为字符串是urlencoded的,所以不会生成第二个/但是如果有,我想应用一个更漂亮的解决方案


谢谢

路由定义中的要求接受正则表达式。因此,我的建议是在路由定义中构建regexp过滤器,它比路由定义复杂一点+

如果您希望最多有一个%2F/字符,那么您可以这样写您的匹配项:

requirements:
    id: \w\/?\w*

我解决了这个问题,在它进入链接之前和在symfony中得到它之后,我替换了%但我仍然好奇是否有人知道更好的方法,我还测试了所有其他字符,没有一个导致这个问题