当前位置:首页 > CMS教程 > Thinkphp > 列表

thinkphp中U方法按路由规则生成url的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-09-04 23:12:54 浏览: 评论:0 

下面小编就为大家分享一篇thinkphp中U方法按路由规则生成url的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧。

如下所示:

//更改模块配置文件

'URL_ROUTER_ON'   => true,

'URL_ROUTE_RULES'=>[]//编写路由优化

tp开启路由后,使用U方法是不会按路由规则生成url的,一般我们是要手动修改模版,把里面的U方法去掉,手动修改链接,如果是已经写好的程序,后期才添加路由,修改起链接就太麻烦了。

今天无聊就修改了一下U方法,让它按路由规则生成url,再不用一条条修改模版了。

下面代码添加到 /ThinkPHP/Common/functions.php 文件,在U方法里面直接搜索if($suffix),在前面加入以下代码,u方法生成的url就是按照路由规则生成的呢!

  1. if(C('URL_ROUTE_RULES')){ 
  2.  foreach (C('URL_ROUTE_RULES'as $rule=>$real) { 
  3.   if(strpos($url$real)!==false){ 
  4.    $url = str_replace($real$rule$url); 
  5.    preg_match("/\/(\w+)\.php\/(\w+)/"$url$match); 
  6.    if(isset($match[1]) && isset($match[2]) && $match[1][0]==$match[2][0]){ 
  7.     $url = preg_replace("/\/(\w+)\.php/"''$url); 
  8.    }elseif(strpos($url'index.php')!==false){ 
  9.     $url = str_replace("/index.php"''$url); 
  10.    }else
  11.     $url = str_replace(".php"''$url); 
  12.    } 
  13.  
  14.    preg_match_all("/(:\w+)/"$rule$matches); 
  15.    foreach ((array)$matches[1] as $match) { 
  16.     $url = str_replace($match . '/'''$url); 
  17.     $url = str_replace(substr($match, 1) . '/'''$url); 
  18.    } 
  19.   }  
  20.  }  
  21. }

Tags: thinkphp路由规则 生成url

分享到:

相关文章