# ThinkPHP函数详解:U函数

[TOC]

U函数用于完成对URL地址的组装,特点在于可以自动根据当前的URL模式和设置生成对应的URL地址,格式为:

>[success] **[模块/控制器/操作#锚点@域名]?参数1=值1&参数2=值2...**

在模板中使用U函数而不是固定写死URL地址的好处在于,一旦你的环境变化或者参数设置改变,你不需要更改模板中的任何代码。

在模板中的调用格式需要采用 **{:U('地址', '参数'…)}** 的方式

## 基本用法

U方法的用法示例【当前默认为Home模块】:

~~~

U('User/add') // 生成Home模块User控制器的add操作地址 /Home/User/add.html

~~~

### 支持分模块调用

~~~

U('Admin/User/add') // 生成Admin模块的User控制器的add操作地址 /Admin/User/add.html

~~~

当然,也可以只是写操作名,表示调用当前模块的

~~~

U('add') // 生成当前访问控制器的add操作地址。如访问Article/index 则生成的地址为Article/add.html

~~~

### 传入一些参数

~~~

U('Blog/read?id=1') // 生成Blog模块的read操作 并且id为1的URL地址

~~~

U方法的第二个参数支持传入参数,支持数组和字符串两种定义方式,如果只是字符串方式的参数可以在第一个参数中定义,下面几种方式都是等效的:

~~~

U('Blog/cate',array('cate_id'=>1,'status'=>1))

U('Blog/cate','cate_id=1&status=1')

U('Blog/cate?cate_id=1&status=1')

~~~

但是不允许使用下面的定义方式来传参数:

~~~

U('Blog/cate/cate_id/1/status/1')

~~~

根据项目的不同URL设置,同样的U方法调用可以智能地对应产生不同的URL地址效果,例如针对:

~~~

U('Blog/read?id=1')

~~~

这个定义为例。

如果当前URL设置为普通模式的话,最后生成的URL地址是:

~~~

http://serverName/index.php?m=Blog&a=read&id=1

~~~

如果当前URL设置为PATHINFO模式的话,同样的方法最后生成的URL地址是:

~~~

http://serverName/index.php/Blog/read/id/1

~~~

如果当前URL设置为REWRITE模式的话,同样的方法最后生成的URL地址是:

~~~

http://serverName/Blog/read/id/1

~~~

如果你同时还设置了PATHINFO分隔符的话:

~~~

'URL_PATHINFO_DEPR'=>'-'

~~~

就会生成

~~~

http://serverName/Blog-read-id-1

~~~

如果当前URL设置为REWRITE模式,并且设置了伪静态后缀为html的话,同样的方法最后生成的URL地址是:

~~~

http://serverName/Blog/read/id/1.html

~~~

如果设置了多个伪静态支持,那么会自动取第一个伪静态后缀添加到URL地址后面,当然你也可以手动在U方法里面指定要生成的伪静态后缀,例如:

~~~

U('Blog/read','id=1','xml'); // 生成地址 http://serverName/Blog/read/id/1.xml

~~~

## 路由支持

U方法还可以支持路由,如果我们定义了一个路由规则为:

~~~

'news/:id\d'=>'News/read'

~~~

那么可以使用

~~~

U('/news/1'); //生成地址 http://serverName/index.php/news/1

~~~

## 域名支持

如果你的应用涉及到多个子域名的操作地址,那么也可以在U方法里面指定需要生成地址的域名,例如:

~~~

U('Blog/read@blog.thinkphp.cn','id=1'); // 生成地址 http://blog.thinkphp.cn/Home/Blog/read/id/1.html

~~~

@后面传入需要指定的域名即可。

此外,U方法的第5个参数如果设置为true,表示自动识别当前的域名,并且会自动根据子域名部署设置APP_SUB_DOMAIN_DEPLOY和APP_SUB_DOMAIN_RULES自动匹配生成当前地址的子域名。

如果开启了URL_CASE_INSENSITIVE,则会统一生成小写的URL地址。

锚点支持

U方法还可以支持生成URL地址中的锚点,例如:

~~~

U('Blog/read#comment','id=1','html'); // 生成地址 http://serverName/Blog/read/id/1.html#comment

~~~

如果域名和锚点同时使用的话,注意顺序为先锚点后域名,例如:

~~~

U('Blog/read#comment@blog.thinkphp.cn','id=1'); // 生成地址 http://blog.thinkphp.cn/Home/Blog/read/id/1.html#comment

~~~

PHP生成url的函数,U函数:URL地址生成相关推荐

  1. thinkphp 助手函数url不生成https_thinkphp5.0 URL 地址生成

    有两个方法 使用系统类 使用助手函数 use think\Url; //输出首页地址 Url::build('index/index/index'); //这个也是输出首页地址 url('index/ ...

  2. laravel route函数 404_laravel生成及获取不同类型的URL地址总结

    php中文网课程 每日17点准时技术干货分享 本文为php中文网认证作者:"齐天大圣"投稿! 生成url的功能是任何一个框架都必须具备的功能,laravel提供了几个方法来生成UR ...

  3. PHP URL的处理函数,php中url处理函数总结

    在php中url处理函数有很多,如有:http_build_query,compact,urldecode.urlencode,parse_url,rawurldecode等等函数. http_bui ...

  4. Django视图层:URL的反向解析(主路由include之namespace,子路由之name,模板标签{%url%},视图reverse()函数,反向解析示例,URL命名空间

    一.视图层The view layer Django 具有 "视图" 的概念,负责处理用户的请求并返回响应. 二.URL反向解析Reverse resolution of URLs ...

  5. clickhouse 常用函数 算数函数 时间函数 日期函数 字符串函数 比较函数 数据类型函数 逻辑函数 类型转换函数 替换函数 数组函数 随机函数 编码函数 UUID URL IP 函数

    clickhouse 常用函数 算数函数 时间函数 日期函数 字符串函数 比较函数 数据类型函数 逻辑函数 类型转换函数 替换函数 数组函数 随机函数 编码函数 UUID URL IP 函数 算数函数 ...

  6. Flask框架——路由:URL规则与视图函数

    1. 概述 路由 是MVC架构的Web框架中相当重要的一个概念,也是本节课程的重点.顾名思意,路由就是在迷茫中找出一条路的意思.在Flask框架中,路由 就表示为用户请求的URL找出其对应的处理函数之 ...

  7. pandas使用read_csv函数读取文件最后N行数据并保留表头、pandas使用read_csv函数读取网络url链接数据

    pandas使用read_csv函数读取文件最后N行数据并保留表头.pandas使用read_csv函数读取网络url链接数据 目录

  8. javascript写的关于静态页面获取URL传递参数的函数[原创]

    2005.04.29发表于blog.csdn.net/zxub 昨天搬家居然忘搬这篇文章了,郁闷~ 以前写了关于静态页面刷新后,跳转菜单定位的函数,前几天没事看了看,感觉还是有点问题,通用性不好,所以 ...

  9. php 分析url函数,PHP 解析URL函数 parse_url()函数

    在PHP中 parse_url()函数的使用,parse_url-解析 URL,返回其组成部分. mixed parse_url ( string $url [, int $component = - ...

最新文章

  1. C++实现求字符串的所有的组合
  2. python+requests实现接口测试 - get与post请求使用
  3. HTTP 错误 404.3 – Not Found 由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序...
  4. TreeView复选框选择逻辑判断
  5. jvm虚拟机组成部分讲解、jvm虚拟机参数使用讲解并发编程框架篇
  6. dp括号匹配 网易面试题_面试题:大括号验证
  7. 在OpenShift上扩展Java EE微服务
  8. ant编译web项目
  9. 360多数据源混合查询引擎的前世今生
  10. 禁止选中页面内容-兼容ie、firefox、chrome
  11. 打开WORD 2003时提示发现错误,需要关闭,还要发送错误报告给Microsoft 解决方案...
  12. listview控件在php的使用方法,VBA窗体之ListView控件的基本应用 | VBA实例教程
  13. java核心技术 下载 网盘_【资源分享】某宝买的40000GB游戏,有你想要的游戏哦,可单独保存或下载...
  14. android自动清缓存,折腾Android系列 一键清理自动释放缓存
  15. PHP工程师接私单操作流程
  16. cubieboard刷机
  17. 塑胶卡扣弹性计算公式_弹性的计算方法
  18. Error while importing package: Couldn’t decompress package
  19. 使用小米天气API获取天气信息
  20. Java中字符数组转换为字符串

热门文章

  1. python跳转下一页_Python网页浏览转到下一页
  2. mysql数据库约束详解_基于MySQL数据库的数据约束实例及五种完整性约束介绍
  3. 遇到error: stray ‘\357’ in program [solution.c]的解决办法
  4. Oracle和MySQL的几点区别
  5. mysql创建定时任务
  6. 为什么有时候NSData转换成NSString的时候返回nil
  7. 使用apt-get autoremove造成的系统无法开机
  8. postgresql interval 字段拼接
  9. Intellij IDEA搭建vue-cli项目
  10. arcgis js api前端完成面积测算