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


Posted in PHP onMarch 12, 2018

如下所示:

//更改模块配置文件
'URL_ROUTER_ON'   => true, 
'URL_ROUTE_RULES'=>[]//编写路由优化

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

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

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

if(C('URL_ROUTE_RULES')){
 foreach (C('URL_ROUTE_RULES') as $rule=>$real) {
  if(strpos($url, $real)!==false){
   $url = str_replace($real, $rule, $url);
   preg_match("/\/(\w+)\.php\/(\w+)/", $url, $match);
   if(isset($match[1]) && isset($match[2]) && $match[1][0]==$match[2][0]){
    $url = preg_replace("/\/(\w+)\.php/", '', $url);
   }elseif(strpos($url, 'index.php')!==false){
    $url = str_replace("/index.php", '', $url);
   }else{
    $url = str_replace(".php", '', $url);
   }

   preg_match_all("/(:\w+)/", $rule, $matches);
   foreach ((array)$matches[1] as $match) {
    $url = str_replace($match . '/', '', $url);
    $url = str_replace(substr($match, 1) . '/', '', $url);
   }
  } 
 } 
}

以上这篇thinkphp中U方法按路由规则生成url的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php框架Phpbean说明
Jan 10 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
Apr 11 PHP
一个简单的网页密码登陆php代码
Jul 17 PHP
解析php入库和出库
Jun 25 PHP
PHP中isset()和unset()函数的用法小结
Mar 11 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
Jun 05 PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 PHP
php版银联支付接口开发简明教程
Oct 14 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
Nov 21 PHP
php post json参数的传递和接收处理方法
May 31 PHP
PHP正则判断一个变量是否为正整数的方法
Feb 27 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
浅谈PHP中pack、unpack的详细用法
Mar 12 #PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 #PHP
Yii2 中实现单点登录的方法
Mar 09 #PHP
php中输出json对象的值(实现方法)
Mar 07 #PHP
php 读写json文件及修改json的方法
Mar 07 #PHP
php读取本地json文件的实例
Mar 07 #PHP
PHP中in_array的隐式转换的解决方法
Mar 06 #PHP
You might like
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
2011/06/30 PHP
php实现设计模式中的单例模式详解
2014/10/11 PHP
php微信支付之APP支付方法
2015/03/04 PHP
php导入模块文件分享
2015/03/17 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
php使用crypt()函数进行加密
2017/06/08 PHP
PHP进阶学习之垃圾回收机制详解
2019/06/18 PHP
Laravel 模型关联基础教程详解
2019/09/17 PHP
JavaScript学习笔记(十七)js 优化
2010/02/04 Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
JavaScript检查数字是否为整数或浮点数的方法
2015/06/09 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
vue cli使用绝对路径引用图片问题的解决
2017/12/06 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
JS实现无限轮播无倒退效果
2020/09/21 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
Python去除字符串前后空格的几种方法
2019/03/04 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
外语学院毕业生的自我鉴定
2013/11/28 职场文书
离婚协议书怎么写
2014/09/12 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
公司年会晚会开幕词
2019/04/02 职场文书
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python