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 相关文章推荐
BBS(php & mysql)完整版(六)
Oct 09 PHP
利用php来自动调用不同服务器上的flash
Oct 09 PHP
PHP中用hash实现的数组
Jul 17 PHP
php 数组动态添加实现代码(最土团购系统的价格排序)
Dec 30 PHP
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
Apr 09 PHP
php遍历目录与文件夹的多种方法详解
Nov 14 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
Aug 18 PHP
主流PHP框架的优缺点对比分析
Dec 25 PHP
laravel安装zend opcache加速器教程
Mar 02 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例
Aug 13 PHP
详解Laravel制作API接口
May 31 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
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
js验证表单大全
2006/11/25 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
JS中多种方式创建对象详解
2016/03/22 Javascript
AngularJS全局警告框实现方法示例
2017/05/18 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
jQuery中extend函数简单用法示例
2017/10/11 jQuery
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
2018/09/19 Javascript
详解vue为什么要求组件模板只能有一个根元素
2019/07/22 Javascript
JS实现吸顶特效
2020/01/08 Javascript
js 数据类型判断的方法
2020/12/03 Javascript
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
python实现网页链接提取的方法分享
2014/02/25 Python
Python内置函数Type()函数一个有趣的用法
2015/02/18 Python
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
在Python下尝试多线程编程
2015/04/28 Python
python脚本监控Tomcat服务器的方法
2018/07/06 Python
Python数据类型之Tuple元组实例详解
2019/05/08 Python
使用python实现简单五子棋游戏
2019/06/18 Python
Python中遍历列表的方法总结
2019/06/27 Python
Python解决pip install时出现的Could not fetch URL问题
2019/08/01 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
2019/08/13 Python
Pycharm Git 设置方法
2020/09/15 Python
记录一下scrapy中settings的一些配置小结
2020/09/28 Python
个性大学生自我评价
2013/12/04 职场文书
十佳班主任事迹材料
2014/01/18 职场文书
学习优秀党员杨宗兴先进事迹材料思想汇报
2014/09/14 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
医护人员继续教育学习心得体会
2016/01/19 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
Mysql中mvcc各场景理解应用
2022/08/05 MySQL