URL 辅助函数¶
URL 辅助函数文件包含了一些帮助你处理 URL 的函数。
可用函数¶
该辅助函数有下列可用函数:
- site_url([$uri = ''[, $protocol = NULL]])¶
参数: - $uri (string) -- URI string
- $protocol (string) -- Protocol, e.g. 'http' or 'https'
返回: Site URL
返回类型: string
根据配置文件返回你的站点 URL 。index.php (获取其他你在配置文件中设置的 index_page 参数) 将会包含在你的 URL 中,另外再加上你传给函数的 URI 参数,以及配置文件中设置的 url_suffix 参数。
推荐在任何时候都使用这种方法来生成你的 URL ,这样在你的 URL 变动时你的代码将具有可移植性。
传给函数的 URI 段参数可以是一个字符串,也可以是个数组,下面是字符串的例子:
echo site_url('news/local/123');
上例将返回类似于:http://example.com/index.php/news/local/123
下面是使用数组的例子:
$segments = array('news', 'local', '123'); echo site_url($segments);
该函数是 CI_Config::site_url() 的别名,更多信息请查阅 配置类 文档。
- base_url($uri = '', $protocol = NULL)¶
参数: - $uri (string) -- URI string
- $protocol (string) -- Protocol, e.g. 'http' or 'https'
返回: Base URL
返回类型: string
根据配置文件返回你站点的根 URL ,例如:
echo base_url();
该函数和 site_url() 函数相同,只是不会在 URL 的后面加上 index_page 或 url_suffix 。
另外,和 site_url() 一样的是,你也可以使用字符串或数组格式的 URI 段。下面是字符串的例子:
echo base_url("blog/post/123");
上例将返回类似于:http://example.com/blog/post/123
跟 site_url() 函数不一样的是,你可以指定一个文件路径(例如图片或样式文件),这将很有用,例如:
echo base_url("images/icons/edit.png");
将返回类似于:http://example.com/images/icons/edit.png
该函数是 CI_Config::base_url() 的别名,更多信息请查阅 配置类 文档。
- current_url()¶
返回: The current URL 返回类型: string 返回当前正在浏览的页面的完整 URL (包括分段)。
注解
该函数和调用下面的代码效果是一样的: | | site_url(uri_string());
- uri_string()¶
返回: An URI string 返回类型: string 返回包含该函数的页面的 URI 分段。例如,如果你的 URL 是:
http://some-site.com/blog/comments/123
函数将返回:
blog/comments/123
该函数是 CI_Config::uri_string() 的别名,更多信息请查阅 配置类 文档。
- index_page()¶
返回: 'index_page' value 返回类型: mixed 返回你在配置文件中配置的 index_page 参数,例如:
echo index_page();
- anchor($uri = '', $title = '', $attributes = '')¶
参数: - $uri (string) -- URI string
- $title (string) -- Anchor title
- $attributes (mixed) -- HTML attributes
返回: HTML hyperlink (anchor tag)
返回类型: string
根据你提供的 URL 生成一个标准的 HTML 链接。
第一个参数可以包含任何你想添加到 URL 上的段,和上面的 site_url() 函数一样,URL 的段可以是字符串或数组。
注解
如果你创建的链接是指向你自己的应用程序,那么不用包含根 URL (http://...)。 这个会根据你的配置文件自动添加到 URL 前面。所以你只需指定要添加的 URL 段就可以了。
第二个参数是链接的文本,如果留空,将使用链接本身作为文本。
第三个参数为你希望添加到链接的属性,可以是一个字符串,也可以是个关联数组。
这里是一些例子:
echo anchor('news/local/123', 'My News', 'title="News title"'); // Prints: <a href="http://example.com/index.php/news/local/123" title="News title">My News</a> echo anchor('news/local/123', 'My News', array('title' => 'The best news!')); // Prints: <a href="http://example.com/index.php/news/local/123" title="The best news!">My News</a> echo anchor('', 'Click here'); // Prints: <a href="http://example.com">Click Here</a>
- anchor_popup($uri = '', $title = '', $attributes = FALSE)¶
参数: - $uri (string) -- URI string
- $title (string) -- Anchor title
- $attributes (mixed) -- HTML attributes
返回: Pop-up hyperlink
返回类型: string
和 anchor() 函数非常类似,只是它生成的 URL 将会在新窗口被打开。你可以通过第三个参数指定 JavaScript 的窗口属性,以此来控制窗口将如何被打开。如果没有设置第三个参数,将会使用你的浏览器设置打开 一个新窗口。
这里是属性的例子:
$atts = array( 'width' => 800, 'height' => 600, 'scrollbars' => 'yes', 'status' => 'yes', 'resizable' => 'yes', 'screenx' => 0, 'screeny' => 0, 'window_name' => '_blank' ); echo anchor_popup('news/local/123', 'Click Me!', $atts);
注解
上面的属性是函数的默认值,所以你只需要设置和你想要的不一样的参数。如果想使用所有默认的参数, 只要简单的传一个空数组即可: | | echo anchor_popup('news/local/123', 'Click Me!', array());
注解
window_name 其实并不算一个属性,而是 Javascript 的 window.open() <http://www.w3schools.com/jsref/met_win_open.asp> 函数的一个参数而已, 该函数接受一个窗口名称或一个 window 对象。
注解
任何不同于上面列出来的其他的属性将会作为 HTML 链接的属性。
- mailto($email, $title = '', $attributes = '')¶
参数: - $email (string) -- E-mail address
- $title (string) -- Anchor title
- $attributes (mixed) -- HTML attributes
返回: A "mail to" hyperlink
返回类型: string
创建一个标准的 HTML e-mail 链接。例如:
echo mailto('me@my-site.com', 'Click Here to Contact Me');
和上面的 anchor() 函数一样,你可以通过第三个参数设置属性:
$attributes = array('title' => 'Mail me'); echo mailto('me@my-site.com', 'Contact Me', $attributes);
- safe_mailto($email, $title = '', $attributes = '')¶
参数: - $email (string) -- E-mail address
- $title (string) -- Anchor title
- $attributes (mixed) -- HTML attributes
返回: A spam-safe "mail to" hyperlink
返回类型: string
和 mailto() 函数一样,但是它的 mailto 标签使用了一个混淆的写法, 可以防止你的 e-mail 地址被垃圾邮件机器人爬到。
- auto_link($str, $type = 'both', $popup = FALSE)¶
参数: - $str (string) -- Input string
- $type (string) -- Link type ('email', 'url' or 'both')
- $popup (bool) -- Whether to create popup links
返回: Linkified string
返回类型: string
将一个字符串中的 URL 和 e-mail 地址自动转换为链接,例如:
$string = auto_link($string);
第二个参数用于决定是转换 URL 还是 e-mail 地址,默认情况不指定该参数,两者都会被转换。 E-mail 地址的链接是使用上面介绍的 safe_mailto() 函数生成的。
只转换 URL
$string = auto_link($string, 'url');
只转换 e-mail 地址:
$string = auto_link($string, 'email');
第三个参数用于指定链接是否要在新窗口打开。可以是布尔值 TRUE 或 FALSE
$string = auto_link($string, 'both', TRUE);
- url_title($str, $separator = '-', $lowercase = FALSE)¶
参数: - $str (string) -- Input string
- $separator (string) -- Word separator
- $lowercase (bool) -- Whether to transform the output string to lower-case
返回: URL-formatted string
返回类型: string
将字符串转换为对人类友好的 URL 字符串格式。例如,如果你有一个博客,你希望使用博客的标题作为 URL , 这时该函数很有用。例如:
$title = "What's wrong with CSS?"; $url_title = url_title($title); // Produces: Whats-wrong-with-CSS
第二个参数指定分隔符,默认使用连字符。一般的选择有:- (连字符) 或者 _ (下划线)
例如:
$title = "What's wrong with CSS?"; $url_title = url_title($title, 'underscore'); // Produces: Whats_wrong_with_CSS
注解
第二个参数连字符和下划线的老的用法已经废弃。
第三个参数指定是否强制转换为小写。默认不会,参数类型为布尔值 TRUE 或 FALSE 。
例如:
$title = "What's wrong with CSS?"; $url_title = url_title($title, 'underscore', TRUE); // Produces: whats_wrong_with_css
- prep_url($str = '')¶
参数: - $str (string) -- URL string
返回: Protocol-prefixed URL string
返回类型: string
当 URL 中缺少协议前缀部分时,使用该函数将会向 URL 中添加 http:// 。
像下面这样使用该函数:
$url = prep_url('example.com');
- redirect($uri = '', $method = 'auto', $code = NULL)¶
参数: - $uri (string) -- URI string
- $method (string) -- Redirect method ('auto', 'location' or 'refresh')
- $code (string) -- HTTP Response code (usually 302 or 303)
返回类型: void
通过 HTTP 头重定向到指定 URL。你可以指定一个完整的 URL,也可以指定一个 URL 段, 该函数会根据配置文件自动生成该 URL。
第二个参数用于指定一种重定向方法。可用的方法有:auto 、 location 和 refresh 。 location 方法速度快,但是在 ISS 服务器上不可靠。默认值为 auto ,它会根据你的服务器环境 智能的选择使用哪种方法。
第三个参数可选,允许你发送一个指定的 HTTP 状态码,这个可以用来为搜索引擎创建 301 重定向。 默认的状态码为 302 ,该参数只适用于 location 重定向方法,对于 refresh 方法无效。例如:
if ($logged_in == FALSE) { redirect('/login/form/'); } // with 301 redirect redirect('/article/13', 'location', 301);
注解
为了让该函数有效,它必须在任何内容输出到浏览器之前被调用。因为输出内容会使用服务器 HTTP 头。
注解
为了更好的控制服务器头,你应该使用 输出类 的 set_header() 方法。
注解
使用 IIS 的用户要注意,如果你隐藏了 Server 这个 HTTP 头, auto 方法将无法检测到 IIS 。 在这种情况下,推荐你使用 refresh 方法。
注解
当使用 HTTP/1.1 的 POST 来访问你的页面时,如果你使用的是 location 方法,会自动使用 HTTP 303 状态码。
重要
该函数会终止脚本的执行。