thinkphp s參數key值解析不全bug

分類: php 發布時間: 2015-08-24 18:11 瀏覽: 892 次

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

如果覺得我的文章對您有用,請隨意打賞。您的支持將鼓勵我繼續創作!

今日特肖