thinkphp s参数key值解析不全bug

分类: php 发布时间: 2015-08-24 18:11 浏览: 2,087 次

如: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值中添加-这个字符的支持就完成了。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!