thinkphp s参数key值解析不全bug
如:http://test.com/?s=/controller/action/my-id/11.html
url中的my-id带有非字母或下划线字符,这个key就会解读不全,只会读到id,我们使用I(‘get.my-id’)就取不到值,要使用I(‘get.id’)才能取到。要解决这个问题,只要修改这个url的解析代码就行了。
位置:ThinkPHP/Library/Think/Dispatcher.class.php 230行
修改前:
preg_replace_callback('/(\w+)\/([^\/]+)/', function($match) use(&$var){$var[$match[1]]=strip_tags($match[2]);}, implode('/',$paths));
修改后:
preg_replace_callback('/([\w\-]+)\/([^\/]+)/', function($match) use(&$var){$var[$match[1]]=strip_tags($match[2]);}, implode('/',$paths));
\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。在正则的key值中添加-这个字符的支持就完成了。