向 CodeIgniter 贡献你的力量
最后更新于:2022-04-01 03:56:40
# 向 CodeIgniter 贡献你的力量
* [编写 CodeIgniter 的文档](http://codeigniter.org.cn/user_guide/documentation/index.html)
* [Developer's Certificate of Origin 1.1](http://codeigniter.org.cn/user_guide/DCO.html)
CodeIgniter 是一个社区驱动的项目,它会接受从社区里贡献的文档和代码。 这些贡献都是通过 GitHub 上 [CodeIgniter 代码仓库](https://github.com/bcit-ci/CodeIgniter) 的 Issues 或者 [Pull Requests](https://help.github.com/articles/using-pull-requests/) 的形式来完成的。
Issues 是一种快速提交 bug 的方式,如果你发现了一个 CodeIgniter 的 bug 或文档错误,那么请先 看看下面这几点:
* 是否已经存在一个打开的 Issue
* 该 Issue 是否已经被修复了(检查下 delevop 分支的代码,或者已关闭的 Issues)
* 这个 bug 很明显你一个人就能修复吗?
提交 Issues 是非常有用的,但是更好的做法是发起一个 Pull Request ,具体的做法是先 fork 主仓库的代码,然后将修改的代码提交到你自己的副本中。这需要你会使用版本控制系统 Git 。
## 支持
请注意,GitHub 并不是用来回答一般的技术支持类问题的!
如果你在使用 CodeIgniter 的某个功能时遇到了问题,请到论坛提问。
如果你不知道自己做的对不对,或者不确定自己找到了一个 bug ,也请先到论坛里提问。
## 提交好问题的技巧
使用描述性的标题(如:解析器类在处理逗号时出错),而不是使用模糊不清的标题(如:我的代码出错了)
在一份报告中只提交一个问题。
在问题中指出 CodeIgniter 的版本(如:3.0-develop),以及出问题的组件(如果你知道的话)(如:解析器类)
解释清楚你希望出现什么结果,以及当前出现的结果是什么。 如果有错误信息的话,并附上错误信息和堆栈信息。
如果有助于阐述你的问题的话,你可以包含少量的代码片段。 如果有大量的代码或截图的话,可以使用类似于 pastebin 或者 dropbox 这样的服务,不要在问题报告中包含这些内容。 为这些内容设置一个合理的过期时间,至少在问题被解决或关闭之前确保它们能访问。
如果你知道如何修复该问题,你可以 fork 并在你自己的分支中修改,然后提交一个 pull request 。 并将上面说的问题报告作为 pull request 的一部分。
如果能在问题报告中描述问题重现的详细步骤,那将是极好的。 如果你还能提供一个单元测试用例来重现该错误,那将更好,因为这给了修复这个问题的人一个更清晰的目标。
## 指导手册
这里是如何提交 Pull Requests 的一些指南,如果你提交的 Pull Requests 没有遵循这篇指南中提出的这些, 你的提交可能会被拒绝并要求你重新提交。这可能听起来有点难,但是为了保证我们的代码质量这是必须要做的。
### PHP 代码规范
所有的代码都必须符合 [代码规范指南](http://codeigniter.org.cn/user_guide/general/styleguide.html),它其实就是 [Allman 缩进风格](http://en.wikipedia.org/wiki/Indent_style#Allman_style) 加上下划线规则以及可读的操作符。遵循代码规则可以让代码的风格保持一致,同时也意味着代的更可读性更好。
### 文档
如果你的修改同时也需要在文档中另加说明,那么你也需要在文档中加上它。新的类、方法、参数、默认值的修改 等等这些都需要对文档做相应的调整。每一处修改也必须要在代码的变更日志(change-log)中进行更新。另外, PHP 的文档注释块(PHPDoc blocks)也要修改。
### 兼容性
CodeIgniter 推荐使用 PHP 5.4 或更高的版本,但是同时它也对 PHP 5.2.4 保持兼容,所以所有提交的代码都必须 满足这一点。如果你用到了 PHP 5.3 (或以上版本)中的函数或新特性,这些代码需要回退到 PHP 5.2.4 版本的。
### 分支
CodeIgniter 使用了 [Git-Flow](http://nvie.com/posts/a-successful-git-branching-model/) 分支模型, 这要求所有的 pull request 应该提交到 develop 分支,develop 分支是正在开发的打算在下一版发布的分支, master 分支总是包含最新的稳定版并保持干净,这样可以在譬如出现紧急安全漏洞时快速的在 master 分支代码 上打上补丁并发布新的版本,而无需担心新加的功能会影响它。正是因为这个原因,所有的提交都应该在 develop 分支,发送到 master 分支的提交会被自动关闭。如果你的提交中包含多处修改,请将每一个修改都放到你独立的分支中。
一次只做一件事:一个 pull request 应该只包含一个修改。这不是意味着说一次提交,而是一次修改(尽管大多数时候 一次提交就是一次修改)。这样做的原因是如果你在同一个 pull request 中修改了 X 和 Y ,但是我们希望能合并 X 同时不想合并 Y ,这时我们就无法合并你的请求。你可以使用 Git-Flow 分支模型为每一个功能创建一个独立的分支, 然后提交两个请求。
### 签名
你必须对你的工作进行签名,保证这些工作是你原创的或者不是你原创的但是你有将它们添加到开源项目中的权利。 在 Git 中签名并没有得到足够重视,所以你几乎用不到 --signoff 参数,但是在你提交代码到 CodeIgniter 时, 必须使用该参数。
~~~
git commit --signoff
~~~
或简写:
~~~
git commit -s
~~~
这个命令会根据你 git 的配置信息在你的提交中添加签名,例如:
> Signed-off-by: John Q Public .public@example.com](mailto:john.public%40example.com)>
如果你正在使用 Tower 客户端,在提交窗口中会有一个 "Sign-Off" 复选框,或者你可以将 git commit 设置成 git commit -s 的别名,这样你就不用关心提交中的签名了。
通过这种方式对你的工作进行签名,说明你将遵守 DCO (Developer's Certificate or Origin),[Developer's Certificate of Origin 1.1](http://codeigniter.org.cn/user_guide/DCO.html) 申明的当前版本位于这份文档的根目录下。
XML 辅助函数
最后更新于:2022-04-01 03:56:38
# XML 辅助函数
XML 辅助函数文件包含了用于处理 XML 数据的一些函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/xml_helper.html#id3)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('xml');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/xml_helper.html#id4)
该辅助函数有下列可用函数:
xml_convert($str[, $protect_all = FALSE])
参数:
* **$str** (string) -- the text string to convert
* **$protect_all** (bool) -- Whether to protect all content that looks like a potential entity instead of just numbered entities, e.g. &foo;
返回: XML-converted string
返回类型: string
将输入字符串中的下列 XML 保留字符转换为实体(Entity):
>
>
> * 和号:&
> * 小于号和大于号:
> * 单引号和双引号:' "
> * 减号:-
>
>
如果 & 符号是作为实体编号的一部分,譬如: { ,该函数将不予处理。 举例:
~~~
$string = '<p>Here is a paragraph & an entity ({).</p>';
$string = xml_convert($string);
echo $string;
~~~
输出结果:
~~~
<p>Here is a paragraph & an entity ({).</p>
~~~
URL 辅助函数
最后更新于:2022-04-01 03:56:36
# URL 辅助函数
URL 辅助函数文件包含了一些帮助你处理 URL 的函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/url_helper.html#id3)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('url');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/url_helper.html#id4)
该辅助函数有下列可用函数:
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() 的别名,更多信息请查阅 [配置类](http://codeigniter.org.cn/user_guide/libraries/config.html) 文档。
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()](http://codeigniter.org.cn/user_guide/helpers/url_helper.html#site_url "site_url") 函数相同,只是不会在 URL 的后面加上 index_page 或 url_suffix 。
另外,和 [site_url()](http://codeigniter.org.cn/user_guide/helpers/url_helper.html#site_url "site_url") 一样的是,你也可以使用字符串或数组格式的 URI 段。下面是字符串的例子:
~~~
echo base_url("blog/post/123");
~~~
上例将返回类似于:http://example.com/blog/post/123
跟 [site_url()](http://codeigniter.org.cn/user_guide/helpers/url_helper.html#site_url "site_url") 函数不一样的是,你可以指定一个文件路径(例如图片或样式文件),这将很有用,例如:
~~~
echo base_url("images/icons/edit.png");
~~~
将返回类似于:http://example.com/images/icons/edit.png
该函数是 CI_Config::base_url() 的别名,更多信息请查阅 [配置类](http://codeigniter.org.cn/user_guide/libraries/config.html) 文档。
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() 的别名,更多信息请查阅 [配置类](http://codeigniter.org.cn/user_guide/libraries/config.html) 文档。
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()](http://codeigniter.org.cn/user_guide/helpers/url_helper.html#site_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()](http://codeigniter.org.cn/user_guide/helpers/url_helper.html#anchor "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() 函数的一个参数而已, 该函数接受一个窗口名称或一个 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()](http://codeigniter.org.cn/user_guide/helpers/url_helper.html#anchor "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()](http://codeigniter.org.cn/user_guide/helpers/url_helper.html#mailto "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()](http://codeigniter.org.cn/user_guide/helpers/url_helper.html#safe_mailto "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** (string) -- 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 状态码。
重要
该函数会终止脚本的执行。
排版辅助函数
最后更新于:2022-04-01 03:56:33
# 排版辅助函数
排版辅助函数文件包含了文本排版相关的一些函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/typography_helper.html#id4)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('typography');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/typography_helper.html#id5)
该辅助函数有下列可用函数:
auto_typography($str[, $reduce_linebreaks = FALSE])
参数:
* **$str** (string) -- Input string
* **$reduce_linebreaks** (bool) -- Whether to reduce multiple instances of double newlines to two
返回: HTML-formatted typography-safe string
返回类型: string
格式化文本以便纠正语义和印刷错误的 HTML 代码。
这个函数是 CI_Typography::auto_typography 函数的别名。 更多信息,查看 [排版类](http://codeigniter.org.cn/user_guide/libraries/typography.html) 。
Usage example:
~~~
$string = auto_typography($string);
~~~
注解
格式排版可能会消耗大量处理器资源,特别是在排版大量内容时。 如果你选择使用这个函数的话,你可以考虑使用 缓存 。
nl2br_except_pre($str)
参数:
* **$str** (string) -- Input string
返回: String with HTML-formatted line breaks
返回类型: string
将换行符转换为 标签,忽略 标签中的换行符。除了对 标签中的换行处理有所不同之外,这个函数和 PHP 函数 nl2br() 是完全一样的。
使用示例:
~~~
$string = nl2br_except_pre($string);
~~~
entity_decode($str, $charset = NULL)
参数:
* **$str** (string) -- Input string
* **$charset** (string) -- Character set
返回: String with decoded HTML entities
返回类型: string
这个函数是 CI_Security::entity_decode() 函数的别名。 更多信息,查看 [安全类](http://codeigniter.org.cn/user_guide/libraries/security.html) 。
文本辅助函数
最后更新于:2022-04-01 03:56:31
# 文本辅助函数
文本辅助函数文件包含了一些帮助你处理文本的函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/text_helper.html#id4)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('text');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/text_helper.html#id5)
该辅助函数有下列可用函数:
word_limiter($str[, $limit = 100[, $end_char = '…']])
参数:
* **$str** (string) -- Input string
* **$limit** (int) -- Limit
* **$end_char** (string) -- End character (usually an ellipsis)
返回: Word-limited string
返回类型: string
根据指定的 单词 个数裁剪字符串。例如:
~~~
$string = "Here is a nice text string consisting of eleven words.";
$string = word_limiter($string, 4);
// Returns: Here is a nice
~~~
第三个参数用于给裁剪的字符串设置一个可选的后缀,默认使用省略号。
character_limiter($str[, $n = 500[, $end_char = '…']])
参数:
* **$str** (string) -- Input string
* **$n** (int) -- Number of characters
* **$end_char** (string) -- End character (usually an ellipsis)
返回: Character-limited string
返回类型: string
根据指定的 字符 个数裁剪字符串。它会保证单词的完整性,所以最终生成的 字符串长度和你指定的长度有可能会有出入。
例如:
~~~
$string = "Here is a nice text string consisting of eleven words.";
$string = character_limiter($string, 20);
// Returns: Here is a nice text string
~~~
第三个参数用于给裁剪的字符串设置一个可选的后缀,如果没该参数,默认使用省略号。
注解
如果你需要将字符串精确的裁剪到指定长度,请参见下面的 [ellipsize()](http://codeigniter.org.cn/user_guide/helpers/text_helper.html#ellipsize "ellipsize") 函数。
ascii_to_entities($str)
参数:
* **$str** (string) -- Input string
返回: A string with ASCII values converted to entities
返回类型: string
将 ASCII 字符转换为字符实体,包括高位 ASCII 和 Microsoft Word 中的特殊字符, 在 Web 页面中使用这些字符可能会导致问题。转换为字符实体后,它们就可以 不受浏览器设置的影响正确的显示出来,也能可靠的存储到到数据库中。本函数依赖于 你的服务器支持的字符集,所以它可能并不能保证 100% 可靠,但在大多数情况下, 它都能正确的识别这些特殊字符(例如重音字符)。
例如:
~~~
$string = ascii_to_entities($string);
~~~
convert_accented_characters($str)
参数:
* **$str** (string) -- Input string
返回: A string with accented characters converted
返回类型: string
将高位 ASCII 字符转换为与之相等的普通 ASCII 字符,当你的 URL 中需要使用 非英语字符,而你的 URL 又设置了只允许出现普通 ASCII 字符时很有用。
例如:
~~~
$string = convert_accented_characters($string);
~~~
注解
该函数使用了 application/config/foreign_chars.php 配置文件来决定 将什么字符转换为什么字符。
word_censor($str, $censored[, $replacement = ''])
参数:
* **$str** (string) -- Input string
* **$censored** (array) -- List of bad words to censor
* **$replacement** (string) -- What to replace bad words with
返回: Censored string
返回类型: string
对字符串中出现的敏感词进行审查。第一个参数为原始字符串,第二个参数 为一个数组,包含你要禁用的单词,第三个参数(可选)可以设置将出现 的敏感词替换成什么,如果未设置,默认替换为磅字符:#### 。
例如:
~~~
$disallowed = array('darn', 'shucks', 'golly', 'phooey');
$string = word_censor($string, $disallowed, 'Beep!');
~~~
highlight_code($str)
参数:
* **$str** (string) -- Input string
返回: String with code highlighted via HTML
返回类型: string
对一段代码(PHP、HTML 等)进行着色。例如:
~~~
$string = highlight_code($string);
~~~
该函数使用了 PHP 的 highlight_string() 函数,所以着色的颜色是在 php.ini 文件中设置的。
highlight_phrase($str, $phrase[, $tag_open = ''[, $tag_close = '']])
参数:
* **$str** (string) -- Input string
* **$phrase** (string) -- Phrase to highlight
* **$tag_open** (string) -- Opening tag used for the highlight
* **$tag_close** (string) -- Closing tag for the highlight
返回: String with a phrase highlighted via HTML
返回类型: string
对字符串内的一个短语进行突出显示。第一个参数是原始字符串, 第二个参数是你想要突出显示的短语。如果要用 HTML 标签对短语进行标记, 那么第三个和第四个参数分别是你想要对短语使用的 HTML 开始和结束标签。
例如:
~~~
$string = "Here is a nice text string about nothing in particular.";
echo highlight_phrase($string, "nice text", '<span style="color:#990000;">', '</span>');
~~~
上面的代码将输出:
~~~
Here is a <span style="color:#990000;">nice text</span> string about nothing in particular.
~~~
注解
该函数默认是使用 标签,老版本的浏览器可能不支持 这个 HTML5 新标签,所以如果你想支持这些老的浏览器,推荐你在你的样式文件 中添加如下 CSS 代码:
~~~
mark {
background: #ff0;
color: #000;
};
~~~
word_wrap($str[, $charlim = 76])
参数:
* **$str** (string) -- Input string
* **$charlim** (int) -- Character limit
返回: Word-wrapped string
返回类型: string
根据指定的 字符 数目对文本进行换行操作,并且保持单词的完整性。
例如:
~~~
$string = "Here is a simple string of text that will help us demonstrate this function.";
echo word_wrap($string, 25);
// Would produce:
// Here is a simple string
// of text that will help us
// demonstrate this
// function.
~~~
ellipsize($str, $max_length[, $position = 1[, $ellipsis = '…']])
参数:
* **$str** (string) -- Input string
* **$max_length** (int) -- String length limit
* **$position** (mixed) -- Position to split at (int or float)
* **$ellipsis** (string) -- What to use as the ellipsis character
返回: Ellipsized string
返回类型: string
该函数移除字符串中出现的标签,并根据指定的长度裁剪字符串,并插入省略号。
第一个参数是要处理的字符串,第二个参数为最终处理完后的字符串长度, 第三个参数为插入省略号的位置,值为 0-1 表示从左到右。例如设置为 1 省略号将插入到字符串的右侧,0.5 将插入到中间,0 将插入到左侧。
第四个参数是可选的,表示省略号的类型,默认是 … 。
例如:
~~~
$str = 'this_string_is_entirely_too_long_and_might_break_my_design.jpg';
echo ellipsize($str, 32, .5);
~~~
输出结果:
~~~
this_string_is_e…ak_my_design.jpg
~~~
字符串辅助函数
最后更新于:2022-04-01 03:56:29
# 字符串辅助函数
字符串辅助函数文件包含了一些帮助你处理字符串的函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/string_helper.html#id4)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('string');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/string_helper.html#id5)
该辅助函数有下列可用函数:
random_string([$type = 'alnum'[, $len = 8]])
参数:
* **$type** (string) -- Randomization type
* **$len** (int) -- Output string length
返回: A random string
返回类型: string
根据你所指定的类型和长度产生一个随机字符串。可用于生成密码或随机字符串。
第一个参数指定字符串类型,第二个参数指定其长度。有下列几种字符串类型可供选择:
* **alpha**: 只含有大小写字母的字符串
* **alnum**: 含有大小写字母以及数字的字符串
* **basic**: 根据 mt_rand() 函数生成的一个随机数字
* **numeric**: 数字字符串
* **nozero**: 数字字符串(不含零)
* **md5**: 根据 md5() 生成的一个加密的随机数字(长度固定为 32)
* **sha1**: 根据 sha1() 生成的一个加密的随机数字(长度固定为 40)
使用示例:
~~~
echo random_string('alnum', 16);
~~~
注解
unique 和 encrypt 类型已经废弃,它们只是 md5 和 sha1 的别名。
increment_string($str[, $separator = '_'[, $first = 1]])
参数:
* **$str** (string) -- Input string
* **$separator** (string) -- Separator to append a duplicate number with
* **$first** (int) -- Starting number
返回: An incremented string
返回类型: string
自增字符串是指向字符串尾部添加一个数字,或者对这个数字进行自增。 这在生成文件的拷贝时非常有用,或者向数据库中某列(例如 title 或 slug)添加重复的内容, 但是这一列设置了唯一索引时。
使用示例:
~~~
echo increment_string('file', '_'); // "file_1"
echo increment_string('file', '-', 2); // "file-2"
echo increment_string('file_4'); // "file_5"
~~~
alternator($args)
参数:
* **$args** (mixed) -- A variable number of arguments
返回: Alternated string(s)
返回类型: mixed
当执行一个循环时,让两个或两个以上的条目轮流使用。示例:
~~~
for ($i = 0; $i < 10; $i++)
{
echo alternator('string one', 'string two');
}
~~~
你可以添加任意多个参数,每一次循环后下一个条目将成为返回值。
~~~
for ($i = 0; $i < 10; $i++)
{
echo alternator('one', 'two', 'three', 'four', 'five');
}
~~~
注解
如果要多次调用该函数,可以简单的通过不带参数重新初始化下。
repeater($data[, $num = 1])
参数:
* **$data** (string) -- Input
* **$num** (int) -- Number of times to repeat
返回: Repeated string
返回类型: string
重复生成你的数据。例如:
~~~
$string = "\n";
echo repeater($string, 30);
~~~
上面的代码会生成 30 个空行。
注解
该函数已经废弃,使用原生的 str_repeat() 函数替代。
reduce_double_slashes($str)
参数:
* **$str** (string) -- Input string
返回: A string with normalized slashes
返回类型: string
将字符串中的双斜线('//')转换为单斜线('/'),但不转换 URL 协议中的双斜线(例如:[http://](http://codeigniter.org.cn/user_guide/helpers/string_helper.html))
示例:
~~~
$string = "http://example.com//index.php";
echo reduce_double_slashes($string); // results in "http://example.com/index.php"
~~~
strip_slashes($data)
参数:
* **$data** (mixed) -- Input string or an array of strings
返回: String(s) with stripped slashes
返回类型: mixed
移除一个字符串数组中的所有斜线。
示例:
~~~
$str = array(
'question' => 'Is your name O\'reilly?',
'answer' => 'No, my name is O\'connor.'
);
$str = strip_slashes($str);
~~~
上面的代码将返回下面的数组:
~~~
array(
'question' => "Is your name O'reilly?",
'answer' => "No, my name is O'connor."
);
~~~
注解
由于历史原因,该函数也接受一个字符串参数,这时该函数就相当于 stripslashes() 的别名。
trim_slashes($str)
参数:
* **$str** (string) -- Input string
返回: Slash-trimmed string
返回类型: string
移除字符串开头和结尾的所有斜线。例如:
~~~
$string = "/this/that/theother/";
echo trim_slashes($string); // results in this/that/theother
~~~
注解
该函数已废弃,使用原生的 trim() 函数代替: | | trim($str, '/');
reduce_multiples($str[, $character = ''[, $trim = FALSE]])
参数:
* **$str** (string) -- Text to search in
* **$character** (string) -- Character to reduce
* **$trim** (bool) -- Whether to also trim the specified character
返回: Reduced string
返回类型: string
移除字符串中重复出现的某个指定字符。例如:
~~~
$string = "Fred, Bill,, Joe, Jimmy";
$string = reduce_multiples($string,","); //results in "Fred, Bill, Joe, Jimmy"
~~~
如果设置第三个参数为 TRUE ,该函数将移除出现在字符串首尾的指定字符。例如:
~~~
$string = ",Fred, Bill,, Joe, Jimmy,";
$string = reduce_multiples($string, ", ", TRUE); //results in "Fred, Bill, Joe, Jimmy"
~~~
quotes_to_entities($str)
参数:
* **$str** (string) -- Input string
返回: String with quotes converted to HTML entities
返回类型: string
将字符串中的单引号和双引号转换为相应的 HTML 实体。例如:
~~~
$string = "Joe's \"dinner\"";
$string = quotes_to_entities($string); //results in "Joe's "dinner""
~~~
strip_quotes($str)
参数:
* **$str** (string) -- Input string
返回: String with quotes stripped
返回类型: string
移除字符串中出现的单引号和双引号。例如:
~~~
$string = "Joe's \"dinner\"";
$string = strip_quotes($string); //results in "Joes dinner"
~~~
表情辅助函数
最后更新于:2022-04-01 03:56:26
# 表情辅助函数
表情辅助函数文件包含了一些让你管理表情的函数。
> 重要
> 表情辅助函数已经废弃,不建议使用。现在只是为了向前兼容而保留。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/smiley_helper.html#id9)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('smiley');
~~~
## [概述](http://codeigniter.org.cn/user_guide/helpers/smiley_helper.html#id10)
表情辅助函数用于将纯文本的表情转换为图片,譬如::-) 转换为 ![smile!](http://codeigniter.org.cn/user_guide/_images/smile.png)
另外它还可以显示一组表情图片,当你点击其中的某个表情时将会被插入到一个表单域中。 例如,如果你有一个博客并允许用户提交评论,你可以将这组表情图片显示在评论的旁边, 这样用户就可以点击想要的表情,然后通过一点点的 Javascript 代码,将该表情插入到 用户的评论中去。
## [可点击的表情包教程](http://codeigniter.org.cn/user_guide/helpers/smiley_helper.html#id11)
这里是一个如何在表单中使用可点击的表情包的示例,这个示例需要你首先下载并安装表情图片, 然后按下面的步骤创建一个控制器和视图。
重要
开始之前,请先 [下载表情图片](https://ellislab.com/asset/ci_download_files/smileys.zip) 然后将其放置到服务器的一个公共目录,并打开 application/config/smileys.php 文件设置表情替换的规则。
### [控制器](http://codeigniter.org.cn/user_guide/helpers/smiley_helper.html#id12)
在 **application/controllers/** 目录下,创建一个文件 Smileys.php 然后输入下面的代码。
重要
修改下面的 [get_clickable_smileys()](http://codeigniter.org.cn/user_guide/helpers/smiley_helper.html#get_clickable_smileys "get_clickable_smileys") 函数的 URL 参数,让其指向你的表情目录。
你会发现我们除了使用到了表情库,还使用到了 [表格类](http://codeigniter.org.cn/user_guide/libraries/table.html):
~~~
<?php
class Smileys extends CI_Controller {
public function index()
{
$this->load->helper('smiley');
$this->load->library('table');
$image_array = get_clickable_smileys('http://example.com/images/smileys/', 'comments');
$col_array = $this->table->make_columns($image_array, 8);
$data['smiley_table'] = $this->table->generate($col_array);
$this->load->view('smiley_view', $data);
}
}
~~~
然后,在 **application/views/** 目录下新建一个文件 **smiley_view.php** 并输入以下代码:
~~~
<html>
<head>
<title>Smileys</title>
<?php echo smiley_js(); ?>
</head>
<body>
<form name="blog">
<textarea name="comments" id="comments" cols="40" rows="4"></textarea>
</form>
<p>Click to insert a smiley!</p>
<?php echo $smiley_table; ?> </body> </html>
When you have created the above controller and view, load it by visiting http://www.example.com/index.php/smileys/
</body>
</html>
~~~
### [字段别名](http://codeigniter.org.cn/user_guide/helpers/smiley_helper.html#id13)
当修改视图的时候,会牵扯到控制器中的 id 字段,带来不便。为了解决这一问题, 你可以在视图中给表情一个别名,并将其映射到 id 字段。
~~~
$image_array = get_smiley_links("http://example.com/images/smileys/", "comment_textarea_alias");
~~~
将别名映射到 id 字段,可以使用 smiley_js 函数并传入这两个参数:
~~~
$image_array = smiley_js("comment_textarea_alias", "comments");
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/smiley_helper.html#id14)
get_clickable_smileys($image_url[, $alias = ''[, $smileys = NULL]])
参数:
* **$image_url** (string) -- URL path to the smileys directory
* **$alias** (string) -- Field alias
返回: An array of ready to use smileys
返回类型: array
返回一个已经绑定了可点击表情的数组。你必须提供表情文件夹的 URL , 还有表单域的 ID 或者表单域的别名。
举例:
~~~
$image_array = get_clickable_smileys('http://example.com/images/smileys/', 'comment');
~~~
smiley_js([$alias = ''[, $field_id = ''[, $inline = TRUE]]])
参数:
* **$alias** (string) -- Field alias
* **$field_id** (string) -- Field ID
* **$inline** (bool) -- Whether we're inserting an inline smiley
返回: Smiley-enabling JavaScript code
返回类型: string
生成可以让图片点击后插入到表单域中的 JavaScript 代码。如果你在生成表情链接的时候 提供了一个别名来代替 id ,你需要在函数中传入别名和相应的 id ,此函数被设计为 应放在你 Web 页面的 部分。
举例:
~~~
<?php echo smiley_js(); ?>
~~~
parse_smileys([$str = ''[, $image_url = ''[, $smileys = NULL]]])
参数:
* **$str** (string) -- Text containing smiley codes
* **$image_url** (string) -- URL path to the smileys directory
* **$smileys** (array) -- An array of smileys
返回: Parsed smileys
返回类型: string
输入一个文本字符串,并将其中的纯文本表情替换为等效的表情图片,第一个参数为你的字符串, 第二个参数是你的表情目录对应的 URL 。
举例:
~~~
$str = 'Here are some smileys: :-) ;-)';
$str = parse_smileys($str, 'http://example.com/images/smileys/');
echo $str;
~~~
安全辅助函数
最后更新于:2022-04-01 03:56:24
# 安全辅助函数
安全辅助函数文件包含了一些和安全相关的函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/security_helper.html#id4)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('security');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/security_helper.html#id5)
该辅助函数有下列可用函数:
xss_clean($str[, $is_image = FALSE])
参数:
* **$str** (string) -- Input data
* **$is_image** (bool) -- Whether we're dealing with an image
返回: XSS-clean string
返回类型: string
该函数提供了 XSS 攻击的过滤。
它是 CI_Input::xss_clean() 函数的别名,更多信息,请查阅 [输入类](http://codeigniter.org.cn/user_guide/libraries/input.html) 文档。
sanitize_filename($filename)
参数:
* **$filename** (string) -- Filename
返回: Sanitized file name
返回类型: string
该函数提供了 目录遍历 攻击的防护。
它是 CI_Security::sanitize_filename() 函数的别名,更多信息,请查阅 [安全类](http://codeigniter.org.cn/user_guide/libraries/security.html) 文档。
do_hash($str[, $type = 'sha1'])
参数:
* **$str** (string) -- Input
* **$type** (string) -- Algorithm
返回: Hex-formatted hash
返回类型: string
该函数可计算单向散列,一般用于对密码进行加密,默认使用 SHA1 。
你可以前往 [hash_algos()](http://php.net/function.hash_algos) 查看所有支持的算法清单。
举例:
~~~
$str = do_hash($str); // SHA1
$str = do_hash($str, 'md5'); // MD5
~~~
注解
这个函数前身为 dohash(),已废弃。
注解
这个函数也不建议使用,使用原生的 hash() 函数替代。
strip_image_tags($str)
参数:
* **$str** (string) -- Input string
返回: The input string with no image tags
返回类型: string
该安全函数从一个字符串中剥除 image 标签,它将 image 标签转为纯图片的 URL 文本。
举例:
~~~
$string = strip_image_tags($string);
~~~
它是 CI_Security::strip_image_tags() 函数的别名,更多信息,请查阅 [安全类](http://codeigniter.org.cn/user_guide/libraries/security.html) 文档。
encode_php_tags($str)
参数:
* **$str** (string) -- Input string
返回: Safely formatted string
返回类型: string
该安全函数将 PHP 标签转换为实体对象。
注解
如果你使用函数 [xss_clean()](http://codeigniter.org.cn/user_guide/helpers/security_helper.html#xss_clean "xss_clean") ,会自动转换。
举例:
~~~
$string = encode_php_tags($string);
~~~
路径辅助函数
最后更新于:2022-04-01 03:56:22
# 路径辅助函数
路径辅助函数文件包含了用于处理服务端文件路径的一些函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/path_helper.html#id4)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('path');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/path_helper.html#id5)
该辅助函数有下列可用函数:
set_realpath($path[, $check_existance = FALSE])
参数:
* **$path** (string) -- Path
* **$check_existance** (bool) -- Whether to check if the path actually exists
返回: An absolute path
返回类型: string
该函数返回指定路径在服务端的绝对路径(不是符号路径或相对路径), 可选的第二个参数用于指定当文件路径不存在时是否报错。
Examples:
~~~
$file = '/etc/php5/apache2/php.ini';
echo set_realpath($file); // Prints '/etc/php5/apache2/php.ini'
$non_existent_file = '/path/to/non-exist-file.txt';
echo set_realpath($non_existent_file, TRUE); // Shows an error, as the path cannot be resolved
echo set_realpath($non_existent_file, FALSE); // Prints '/path/to/non-exist-file.txt'
$directory = '/etc/php5';
echo set_realpath($directory); // Prints '/etc/php5/'
$non_existent_directory = '/path/to/nowhere';
echo set_realpath($non_existent_directory, TRUE); // Shows an error, as the path cannot be resolved
echo set_realpath($non_existent_directory, FALSE); // Prints '/path/to/nowhere'
~~~
数字辅助函数
最后更新于:2022-04-01 03:56:20
# 数字辅助函数
数字辅助函数文件包含了用于处理数字的一些函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/number_helper.html#id4)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('number');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/number_helper.html#id5)
该辅助函数有下列可用函数:
byte_format($num[, $precision = 1])
参数:
* **$num** (mixed) -- Number of bytes
* **$precision** (int) -- Floating point precision
返回: Formatted data size string
返回类型: string
根据数值大小以字节的形式格式化,并添加适合的缩写单位。 譬如:
~~~
echo byte_format(456); // Returns 456 Bytes
echo byte_format(4567); // Returns 4.5 KB
echo byte_format(45678); // Returns 44.6 KB
echo byte_format(456789); // Returns 447.8 KB
echo byte_format(3456789); // Returns 3.3 MB
echo byte_format(12345678912345); // Returns 1.8 GB
echo byte_format(123456789123456789); // Returns 11,228.3 TB
~~~
可选的第二个参数允许你设置结果的精度:
~~~
echo byte_format(45678, 2); // Returns 44.61 KB
~~~
注解
这个函数生成的缩写单位可以在 language//number_lang.php 语言文件中找到。
Inflector 辅助函数
最后更新于:2022-04-01 03:56:17
# Inflector 辅助函数
Inflector 辅助函数文件包含了一些帮助你将单词转换为单复数或驼峰格式等等的函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/inflector_helper.html#id3)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('inflector');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/inflector_helper.html#id4)
该辅助函数有下列可用函数:
singular($str)
参数:
* **$str** (string) -- Input string
返回: A singular word
返回类型: string
将一个单词的复数形式变为单数形式。例如:
~~~
echo singular('dogs'); // Prints 'dog'
~~~
plural($str)
参数:
* **$str** (string) -- Input string
返回:A plular word
返回类型: string
将一个单词的单数形式变为复数形式。例如:
~~~
echo plural('dog'); // Prints 'dogs'
~~~
camelize($str)
参数:
* **$str** (string) -- Input string
返回: Camelized string
返回类型: string
将一个以空格或下划线分隔的单词转换为驼峰格式。例如:
~~~
echo camelize('my_dog_spot'); // Prints 'myDogSpot'
~~~
underscore($str)
参数:
* **$str** (string) -- Input string
返回: String containing underscores instead of spaces
返回类型: string
将以空格分隔的多个单词转换为下划线分隔格式。例如:
~~~
echo underscore('my dog spot'); // Prints 'my_dog_spot'
~~~
humanize($str[, $separator = '_'])
参数:
* **$str** (string) -- Input string
* **$separator** (string) -- Input separator
返回: Humanized string
返回类型: string
将以下划线分隔的多个单词转换为以空格分隔,并且每个单词以大写开头。例如:
~~~
echo humanize('my_dog_spot'); // Prints 'My Dog Spot'
~~~
如果单词是以连接符分割的,第二个参数传入连接符:
~~~
echo humanize('my-dog-spot', '-'); // Prints 'My Dog Spot'
~~~
is_countable($word)
参数:
* **$word** (string) -- Input string
返回: TRUE if the word is countable or FALSE if not
返回类型: bool
判断某个单词是否有复数形式。例如:
~~~
is_countable('equipment'); // Returns FALSE
~~~
语言辅助函数
最后更新于:2022-04-01 03:56:15
# 语言辅助函数
语言辅助函数文件包含了用于处理语言文件的一些函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/language_helper.html#id4)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('language');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/language_helper.html#id5)
该辅助函数有下列可用函数:
lang($line[, $for = ''[, $attributes = array()]])
参数:
* **$line** (string) -- Language line key
* **$for** (string) -- HTML "for" attribute (ID of the element we're creating a label for)
* **$attributes** (array) -- Any additional HTML attributes
返回: HTML-formatted language line label
返回类型: string
此函数使用简单的语法从已加载的语言文件中返回一行文本。 这种简单的写法在视图文件中可能比调用 CI_Lang::line() 更顺手。
Example:
~~~
echo lang('language_key', 'form_item_id', array('class' => 'myClass'));
// Outputs: <label for="form_item_id" class="myClass">Language line</label>
~~~
HTML 辅助函数
最后更新于:2022-04-01 03:56:13
# HTML 辅助函数
HTML 辅助函数文件包含了用于处理 HTML 的一些函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/html_helper.html#id3)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('html');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/html_helper.html#id4)
该辅助函数有下列可用函数:
heading([$data = ''[, $h = '1'[, $attributes = '']]])
参数:
* **$data** (string) -- Content
* **$h** (string) -- Heading level
* **$attributes** (mixed) -- HTML attributes
返回: HTML heading tag
返回类型: string
用于创建 HTML 标题标签,第一个参数为标题内容,第二个参数为标题大小。例如:
~~~
echo heading('Welcome!', 3);
~~~
上面代码将生成:Welcome!
另外,为了向标题标签添加属性,例如 HTML class、id 或内联样式,可以通过第三个参数传一个字符串或者一个数组:
~~~
echo heading('Welcome!', 3, 'class="pink"');
echo heading('How are you?', 4, array('id' => 'question', 'class' => 'green'));
~~~
上面代码将生成:
~~~
<h3 class="pink">Welcome!<h3>
<h4 id="question" class="green">How are you?</h4>
~~~
img([$src = ''[, $index_page = FALSE[, $attributes = '']]])
参数:
* **$src** (string) -- Image source data
* **$index_page** (bool) -- Whether to treat $src as a routed URI string
* **$attributes** (array) -- HTML attributes
返回: HTML image tag
返回类型: string
用于生成 HTML 标签,第一个参数为图片地址,例如:
~~~
echo img('images/picture.jpg'); // gives <img src="http://site.com/images/picture.jpg" />
~~~
第二个参数可选,其值为 TRUE 或 FALSE,用于指定是否在生成的图片地址中添加由 $config['index_page'] 所设置的起始页面。 一般来说,当你使用媒体控制器时才使用这个:
~~~
echo img('images/picture.jpg', TRUE); // gives <img src="http://site.com/index.php/images/picture.jpg" alt="" />
~~~
另外,你也可以通过向 img() 函数传递一个关联数组来完全控制所有的属性和值,如果没有提供 alt 属性, CodeIgniter 默认使用一个空字符串。
例如:
~~~
$image_properties = array(
'src' => 'images/picture.jpg',
'alt' => 'Me, demonstrating how to eat 4 slices of pizza at one time',
'class' => 'post_images',
'width' => '200',
'height'=> '200',
'title' => 'That was quite a night',
'rel' => 'lightbox'
);
img($image_properties);
// <img src="http://site.com/index.php/images/picture.jpg" alt="Me, demonstrating how to eat 4 slices of pizza at one time" class="post_images" width="200" height="200" title="That was quite a night" rel="lightbox" />
~~~
link_tag([$href = ''[, $rel = 'stylesheet'[, $type = 'text/css'[, $title = ''[, $media = ''[, $index_page = FALSE]]]]]])
参数:
* **$href** (string) -- What are we linking to
* **$rel** (string) -- Relation type
* **$type** (string) -- Type of the related document
* **$title** (string) -- Link title
* **$media** (string) -- Media type
* **$index_page** (bool) -- Whether to treat $src as a routed URI string
返回: HTML link tag
返回类型: string
用于生成 HTML 标签,这在生成样式的 link 标签时很有用,当然也可以生成其他的 link 标签。 参数为 href ,后面的是可选的:rel 、type 、 title 、 media 和 index_page 。
index_page 参数是个布尔值,用于指定是否在 href 链接中添加由 $config['index_page'] 所设置的起始页面。
例如:
~~~
echo link_tag('css/mystyles.css');
// gives <link href="http://site.com/css/mystyles.css" rel="stylesheet" type="text/css" />
~~~
另一个例子:
~~~
echo link_tag('favicon.ico', 'shortcut icon', 'image/ico');
// <link href="http://site.com/favicon.ico" rel="shortcut icon" type="image/ico" />
echo link_tag('feed', 'alternate', 'application/rss+xml', 'My RSS Feed');
// <link href="http://site.com/feed" rel="alternate" type="application/rss+xml" title="My RSS Feed" />
~~~
另外,你也可以通过向 link() 函数传递一个关联数组来完全控制所有的属性和值:
~~~
$link = array(
'href' => 'css/printer.css',
'rel' => 'stylesheet',
'type' => 'text/css',
'media' => 'print'
);
echo link_tag($link);
// <link href="http://site.com/css/printer.css" rel="stylesheet" type="text/css" media="print" />
~~~
ul($list[, $attributes = ''])
参数:
* **$list** (array) -- List entries
* **$attributes** (array) -- HTML attributes
返回: HTML-formatted unordered list
返回类型: string
用于生成 HTML 无序列表( ),参数为简单的数组或者多维数组。例如:
~~~
$list = array(
'red',
'blue',
'green',
'yellow'
);
$attributes = array(
'class' => 'boldlist',
'id' => 'mylist'
);
echo ul($list, $attributes);
~~~
上面的代码将生成:
~~~
<ul class="boldlist" id="mylist">
<li>red</li>
<li>blue</li>
<li>green</li>
<li>yellow</li>
</ul>
~~~
下面是个更复杂的例子,使用了多维数组:
~~~
$attributes = array(
'class' => 'boldlist',
'id' => 'mylist'
);
$list = array(
'colors' => array(
'red',
'blue',
'green'
),
'shapes' => array(
'round',
'square',
'circles' => array(
'ellipse',
'oval',
'sphere'
)
),
'moods' => array(
'happy',
'upset' => array(
'defeated' => array(
'dejected',
'disheartened',
'depressed'
),
'annoyed',
'cross',
'angry'
)
)
);
echo ul($list, $attributes);
~~~
上面的代码将生成:
~~~
<ul class="boldlist" id="mylist">
<li>colors
<ul>
<li>red</li>
<li>blue</li>
<li>green</li>
</ul>
</li>
<li>shapes
<ul>
<li>round</li>
<li>suare</li>
<li>circles
<ul>
<li>elipse</li>
<li>oval</li>
<li>sphere</li>
</ul>
</li>
</ul>
</li>
<li>moods
<ul>
<li>happy</li>
<li>upset
<ul>
<li>defeated
<ul>
<li>dejected</li>
<li>disheartened</li>
<li>depressed</li>
</ul>
</li>
<li>annoyed</li>
<li>cross</li>
<li>angry</li>
</ul>
</li>
</ul>
</li>
</ul>
~~~
ol($list, $attributes = '')
参数:
* **$list** (array) -- List entries
* **$attributes** (array) -- HTML attributes
返回: HTML-formatted ordered list
返回类型: string
和 [ul()](http://codeigniter.org.cn/user_guide/helpers/html_helper.html#ul "ul") 函数一样,只是它生成的是有序列表( )。
meta([$name = ''[, $content = ''[, $type = 'name'[, $newline = "n"]]]])
参数:
* **$name** (string) -- Meta name
* **$content** (string) -- Meta content
* **$type** (string) -- Meta type
* **$newline** (string) -- Newline character
返回: HTML meta tag
返回类型: string
用于生成 meta 标签,你可以传递一个字符串参数,或者一个数组,或者一个多维数组。
例如:
~~~
echo meta('description', 'My Great site');
// Generates: <meta name="description" content="My Great Site" />
echo meta('Content-type', 'text/html; charset=utf-8', 'equiv');
// Note the third parameter. Can be "equiv" or "name"
// Generates: <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
echo meta(array('name' => 'robots', 'content' => 'no-cache'));
// Generates: <meta name="robots" content="no-cache" />
$meta = array(
array(
'name' => 'robots',
'content' => 'no-cache'
),
array(
'name' => 'description',
'content' => 'My Great Site'
),
array(
'name' => 'keywords',
'content' => 'love, passion, intrigue, deception'
),
array(
'name' => 'robots',
'content' => 'no-cache'
),
array(
'name' => 'Content-type',
'content' => 'text/html; charset=utf-8', 'type' => 'equiv'
)
);
echo meta($meta);
// Generates:
// <meta name="robots" content="no-cache" />
// <meta name="description" content="My Great Site" />
// <meta name="keywords" content="love, passion, intrigue, deception" />
// <meta name="robots" content="no-cache" />
// <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
~~~
doctype([$type = 'xhtml1-strict'])
参数:
* **$type** (string) -- Doctype name
返回: HTML DocType tag
返回类型: string
用于生成 DTD (文档类型声明,document type declaration),默认使用的是 XHTML 1.0 Strict ,但是你也可以选择其他的。
例如:
~~~
echo doctype(); // <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
echo doctype('html4-trans'); // <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
~~~
下表是可选的文档类型,它是可配置的,你可以在 application/config/doctypes.php 文件中找到它。
| 文档类型 | 选项 | 结果 |
| --- | --- | --- |
| XHTML 1.1 | xhtml11 | |
| XHTML 1.0 Strict | xhtml1-strict | |
| XHTML 1.0 Transitional | xhtml1-trans | |
| XHTML 1.0 Frameset | xhtml1-frame | |
| XHTML Basic 1.1 | xhtml-basic11 | |
| HTML 5 | html5 | |
| HTML 4 Strict | html4-strict | |
| HTML 4 Transitional | html4-trans | |
| HTML 4 Frameset | html4-frame | |
| MathML 1.01 | mathml1 | |
| MathML 2.0 | mathml2 | |
| SVG 1.0 | svg10 | |
| SVG 1.1 Full | svg11 | |
| SVG 1.1 Basic | svg11-basic | |
| SVG 1.1 Tiny | svg11-tiny | |
| XHTML+MathML+SVG (XHTML host) | xhtml-math-svg-xh | |
| XHTML+MathML+SVG (SVG host) | xhtml-math-svg-sh | |
| XHTML+RDFa 1.0 | xhtml-rdfa-1 | |
| XHTML+RDFa 1.1 | xhtml-rdfa-2 | |
br([$count = 1])
参数:
* **$count** (int) -- Number of times to repeat the tag
返回: HTML line break tag
返回类型: string
根据指定的个数生成多个换行标签( )。 例如:
~~~
echo br(3);
~~~
上面的代码将生成:
~~~
<br /><br /><br />
~~~
注解
该函数已经废弃,请使用原生的 str_repeat() 函数代替。
nbs([$num = 1])
参数:
* **$num** (int) -- Number of space entities to produce
返回: A sequence of non-breaking space HTML entities
返回类型: string
根据指定的个数生成多个不换行空格( )。 例如:
~~~
echo nbs(3);
~~~
上面的代码将生成:
~~~
~~~
注解
该函数已经废弃,请使用原生的 str_repeat() 函数代替。
表单辅助函数
最后更新于:2022-04-01 03:56:10
# 表单辅助函数
表单辅助函数包含了一些函数用于帮助你处理表单。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/form_helper.html#id5)
使用下面的代码来加载表单辅助函数:
~~~
$this->load->helper('form');
~~~
## [对域值转义](http://codeigniter.org.cn/user_guide/helpers/form_helper.html#id6)
你可能会需要在表单元素中使用 HTML 或者诸如引号这样的字符,为了安全性, 你需要使用 [通用函数](http://codeigniter.org.cn/user_guide/general/common_functions.html) html_escape() 。
考虑下面这个例子:
~~~
$string = 'Here is a string containing "quoted" text.';
<input type="text" name="myfield" value="<?php echo $string; ?>" />
~~~
因为上面的字符串中包含了一对引号,它会破坏表单,使用 [html_escape()](http://codeigniter.org.cn/user_guide/general/common_functions.html#html_escape "html_escape") 函数可以对 HTML 的特殊字符进行转义,从而可以安全的在域值中使用字符串:
~~~
<input type="text" name="myfield" value="<?php echo html_escape($string); ?>" />
~~~
注解
如果你使用了这个页面上介绍的任何一个函数,表单的域值会被自动转义, 所以你无需再调用这个函数。只有在你创建自己的表单元素时需要使用它。
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/form_helper.html#id7)
该辅助函数有下列可用函数:
form_open([$action = ''[, $attributes = ''[, $hidden = array()]]])
参数:
* **$action** (string) -- Form action/target URI string
* **$attributes** (array) -- HTML attributes
* **$hidden** (array) -- An array of hidden fields' definitions
返回: An HTML form opening tag
返回类型: string
生成一个 form 起始标签,并且它的 action URL 会根据你的配置文件自动生成。 你还可以给表单添加属性和隐藏域,另外,它还会根据你配置文件中的字符集参数 自动生成 accept-charset 属性。
使用该函数来生成标签比你自己写 HTML 代码最大的好处是:当你的 URL 变动时, 它可以提供更好的可移植性。
这里是个简单的例子:
~~~
echo form_open('email/send');
~~~
上面的代码会创建一个表单,它的 action 为根 URL 加上 "email/send",向下面这样:
~~~
<form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send">
~~~
**添加属性**
>
>
> 可以通过第二个参数传递一个关联数组来添加属性,例如:
>
>
>
>
>
> ~~~
> $attributes = array('class' => 'email', 'id' => 'myform');
> echo form_open('email/send', $attributes);
> ~~~
>
>
>
>
>
> 另外,第二个参数你也可以直接使用字符串:
>
>
>
>
>
> ~~~
> echo form_open('email/send', 'class="email" id="myform"');
> ~~~
>
>
>
>
>
> 上面的代码会创建一个类似于下面的表单:
>
>
>
>
>
> ~~~
> <form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send" class="email" id="myform">
> ~~~
>
>
>
>
>
>
**添加隐藏域**
>
>
> 可以通过第三个参数传递一个关联数组来添加隐藏域,例如:
>
>
>
>
>
> ~~~
> $hidden = array('username' => 'Joe', 'member_id' => '234');
> echo form_open('email/send', '', $hidden);
> ~~~
>
>
>
>
>
> 你可以使用一个空值跳过第二个参数。
>
> 上面的代码会创建一个类似于下面的表单:
>
>
>
>
>
> ~~~
> <form method="post" accept-charset="utf-8" action="http://example.com/index.php/email/send">
> <input type="hidden" name="username" value="Joe" />
> <input type="hidden" name="member_id" value="234" />
> ~~~
>
>
>
>
>
>
form_open_multipart([$action = ''[, $attributes = array()[, $hidden = array()]])
参数:
* **$action** (string) -- Form action/target URI string
* **$attributes** (array) -- HTML attributes
* **$hidden** (array) -- An array of hidden fields' definitions
返回: An HTML multipart form opening tag
返回类型: string
这个函数和上面的 [form_open()](http://codeigniter.org.cn/user_guide/helpers/form_helper.html#form_open "form_open") 函数完全一样, 只是它会给表单添加一个 multipart 属性,在你使用表单上传文件时必须使用它。
form_hidden($name[, $value = ''])
参数:
* **$name** (string) -- Field name
* **$value** (string) -- Field value
返回: An HTML hidden input field tag
返回类型: string
生成隐藏域。你可以使用名称和值两个参数来创建一个隐藏域:
~~~
form_hidden('username', 'johndoe');
// Would produce: <input type="hidden" name="username" value="johndoe" />
~~~
... 或者你可以使用一个关联数组,来生成多个隐藏域:
~~~
$data = array(
'name' => 'John Doe',
'email' => 'john@example.com',
'url' => 'http://example.com'
);
echo form_hidden($data);
/*
Would produce:
<input type="hidden" name="name" value="John Doe" />
<input type="hidden" name="email" value="john@example.com" />
<input type="hidden" name="url" value="http://example.com" />
*/
~~~
你还可以向第二个参数传递一个关联数组:
~~~
$data = array(
'name' => 'John Doe',
'email' => 'john@example.com',
'url' => 'http://example.com'
);
echo form_hidden('my_array', $data);
/*
Would produce:
<input type="hidden" name="my_array[name]" value="John Doe" />
<input type="hidden" name="my_array[email]" value="john@example.com" />
<input type="hidden" name="my_array[url]" value="http://example.com" />
*/
~~~
如果你想创建带有其他属性的隐藏域,可以这样:
~~~
$data = array(
'type' => 'hidden',
'name' => 'email',
'id' => 'hiddenemail',
'value' => 'john@example.com',
'class' => 'hiddenemail'
);
echo form_input($data);
/*
Would produce:
<input type="hidden" name="email" value="john@example.com" id="hiddenemail" class="hiddenemail" />
*/
~~~
form_input([$data = ''[, $value = ''[, $extra = '']])
参数:
* **$data** (array) -- Field attributes data
* **$value** (string) -- Field value
* **$extra** (string) -- Extra attributes to be added to the tag as is
返回: An HTML text input field tag
返回类型: string
用于生成标准的文本输入框,你可以简单的使用文本域的名称和值:
~~~
echo form_input('username', 'johndoe');
~~~
或者使用一个关联数组,来包含任何你想要的数据:
~~~
$data = array(
'name' => 'username',
'id' => 'username',
'value' => 'johndoe',
'maxlength' => '100',
'size' => '50',
'style' => 'width:50%'
);
echo form_input($data);
/*
Would produce:
<input type="text" name="username" value="johndoe" id="username" maxlength="100" size="50" style="width:50%" />
*/
~~~
如果你还希望能包含一些额外的数据,譬如 JavaScript ,你可以通过第三个参数传一个字符串:
~~~
$js = 'onClick="some_function()"';
echo form_input('username', 'johndoe', $js);
~~~
form_password([$data = ''[, $value = ''[, $extra = '']]])
参数:
* **$data** (array) -- Field attributes data
* **$value** (string) -- Field value
* **$extra** (string) -- Extra attributes to be added to the tag as is
返回: An HTML password input field tag
返回类型: string
该函数和上面的 form_input() 函数一样,只是生成的输入框为 "password" 类型。
form_upload([$data = ''[, $value = ''[, $extra = '']]])
参数:
* **$data** (array) -- Field attributes data
* **$value** (string) -- Field value
* **$extra** (string) -- Extra attributes to be added to the tag as is
返回: An HTML file upload input field tag
返回类型: string
该函数和上面的 form_input() 函数一样,只是生成的输入框为 "file" 类型, 可以用来上传文件。
form_textarea([$data = ''[, $value = ''[, $extra = '']]])
参数:
* **$data** (array) -- Field attributes data
* **$value** (string) -- Field value
* **$extra** (string) -- Extra attributes to be added to the tag as is
返回: An HTML textarea tag
返回类型: string
该函数和上面的 form_input() 函数一样,只是生成的输入框为 "textarea" 类型。
注解
对于 textarea 类型的输入框,你可以使用 rows 和 cols 属性, 来代替上面例子中的 maxlength 和 size 属性。
form_dropdown([$name = ''[, $options = array()[, $selected = array()[, $extra = '']]]])
参数:
* **$name** (string) -- Field name
* **$options** (array) -- An associative array of options to be listed
* **$selected** (array) -- List of fields to mark with the selected attribute
* **$extra** (string) -- Extra attributes to be added to the tag as is
返回: An HTML dropdown select field tag
返回类型: string
用于生成一个标准的下拉框域。第一个参数为域的名称,第二个参数为一个关联数组, 包含所有的选项,第三个参数为你希望默认选中的值。你也可以把第三个参数设置成 一个包含多个值的数组,CodeIgniter 将会为你生成多选下拉框。
例如:
~~~
$options = array(
'small' => 'Small Shirt',
'med' => 'Medium Shirt',
'large' => 'Large Shirt',
'xlarge' => 'Extra Large Shirt',
);
$shirts_on_sale = array('small', 'large');
echo form_dropdown('shirts', $options, 'large');
/*
Would produce:
<select name="shirts">
<option value="small">Small Shirt</option>
<option value="med">Medium Shirt</option>
<option value="large" selected="selected">Large Shirt</option>
<option value="xlarge">Extra Large Shirt</option>
</select>
*/
echo form_dropdown('shirts', $options, $shirts_on_sale);
/*
Would produce:
<select name="shirts" multiple="multiple">
<option value="small" selected="selected">Small Shirt</option>
<option value="med">Medium Shirt</option>
<option value="large" selected="selected">Large Shirt</option>
<option value="xlarge">Extra Large Shirt</option>
</select>
*/
~~~
如果你希望为起始标签 添加一些额外的数据,例如 id 属性或 JavaScript , 你可以通过第四个参数传一个字符串:
~~~
$js = 'id="shirts" onChange="some_function();"';
echo form_dropdown('shirts', $options, 'large', $js);
~~~
如果你传递的 $options 数组是个多维数组,form_dropdown() 函数将会生成带 的下拉框,并使用数组的键作为 label 。
form_multiselect([$name = ''[, $options = array()[, $selected = array()[, $extra = '']]]])
参数:
* **$name** (string) -- Field name
* **$options** (array) -- An associative array of options to be listed
* **$selected** (array) -- List of fields to mark with the selected attribute
* **$extra** (string) -- Extra attributes to be added to the tag as is
返回: An HTML dropdown multiselect field tag
返回类型: string
用于生成一个标准的多选下拉框。第一个参数为域的名称,第二个参数为一个关联数组, 包含所有的选项,第三个参数为你希望默认选中的一个或多个值。
参数的用法和上面的 [form_dropdown()](http://codeigniter.org.cn/user_guide/helpers/form_helper.html#form_dropdown "form_dropdown") 函数一样,只是域的名称需要使用 数组语法,例如:foo[]
form_fieldset([$legend_text = ''[, $attributes = array()]])
参数:
* **$legend_text** (string) -- Text to put in the tag
* **$attributes** (array) -- Attributes to be set on the tag
返回:
An HTML fieldset opening tag
返回类型: string
用于生成 fieldset 和 legend 域。
例如:
~~~
echo form_fieldset('Address Information');
echo "<p>fieldset content here</p>\n";
echo form_fieldset_close();
/*
Produces:
<fieldset>
<legend>Address Information</legend>
<p>form content here</p>
</fieldset>
*/
~~~
和其他的函数类似,你也可以通过给第二个参数传一个关联数组来添加额外的属性:
~~~
$attributes = array(
'id' => 'address_info',
'class' => 'address_info'
);
echo form_fieldset('Address Information', $attributes);
echo "<p>fieldset content here</p>\n";
echo form_fieldset_close();
/*
Produces:
<fieldset id="address_info" class="address_info">
<legend>Address Information</legend>
<p>form content here</p>
</fieldset>
*/
~~~
form_fieldset_close([$extra = ''])
参数:
* **$extra** (string) -- Anything to append after the closing tag, as is
返回: An HTML fieldset closing tag
返回类型: string
用于生成结束标签 ,使用这个函数唯一的一个好处是, 它可以在结束标签的后面加上一些其他的数据。例如:
~~~
$string = '</div></div>';
echo form_fieldset_close($string);
// Would produce: </fieldset></div></div>
~~~
form_checkbox([$data = ''[, $value = ''[, $checked = FALSE[, $extra = '']]]])
参数:
* **$data** (array) -- Field attributes data
* **$value** (string) -- Field value
* **$checked** (bool) -- Whether to mark the checkbox as being checked
* **$extra** (string) -- Extra attributes to be added to the tag as is
返回: An HTML checkbox input tag
返回类型: string
用于生成一个复选框,例如:
~~~
echo form_checkbox('newsletter', 'accept', TRUE);
// Would produce: <input type="checkbox" name="newsletter" value="accept" checked="checked" />
~~~
第三个参数为布尔值 TRUE 或 FALSE ,用于指定复选框默认是否为选定状态。
和其他函数一样,你可以传一个属性的数组给它:
~~~
$data = array(
'name' => 'newsletter',
'id' => 'newsletter',
'value' => 'accept',
'checked' => TRUE,
'style' => 'margin:10px'
);
echo form_checkbox($data);
// Would produce: <input type="checkbox" name="newsletter" id="newsletter" value="accept" checked="checked" style="margin:10px" />
~~~
另外,如果你希望向标签中添加额外的数据如 JavaScript ,也可以传一个字符串给第四个参数:
~~~
$js = 'onClick="some_function()"';
echo form_checkbox('newsletter', 'accept', TRUE, $js)
~~~
form_radio([$data = ''[, $value = ''[, $checked = FALSE[, $extra = '']]]])
参数:
* **$data** (array) -- Field attributes data
* **$value** (string) -- Field value
* **$checked** (bool) -- Whether to mark the radio button as being checked
* **$extra** (string) -- Extra attributes to be added to the tag as is
返回: An HTML radio input tag
返回类型: string
该函数和 [form_checkbox()](http://codeigniter.org.cn/user_guide/helpers/form_helper.html#form_checkbox "form_checkbox") 函数完全一样,只是它生成的是单选框。
form_label([$label_text = ''[, $id = ''[, $attributes = array()]]])
参数:
* **$label_text** (string) -- Text to put in the tag
* **$id** (string) -- ID of the form element that we're making a label for
* **$attributes** (string) -- HTML attributes
返回: An HTML field label tag
返回类型: string
生成 标签,例如:
~~~
echo form_label('What is your Name', 'username');
// Would produce: <label for="username">What is your Name</label>
~~~
和其他的函数一样,如果你想添加额外的属性的话,可以传一个关联数组给第三个参数。
例如:
~~~
$attributes = array(
'class' => 'mycustomclass',
'style' => 'color: #000;'
);
echo form_label('What is your Name', 'username', $attributes);
// Would produce: <label for="username" class="mycustomclass" style="color: #000;">What is your Name</label>
~~~
form_submit([$data = ''[, $value = ''[, $extra = '']]])
参数:
* **$data** (string) -- Button name
* **$value** (string) -- Button value
* **$extra** (string) -- Extra attributes to be added to the tag as is
返回: An HTML input submit tag
返回类型: string
用于生成一个标准的提交按钮。例如:
~~~
echo form_submit('mysubmit', 'Submit Post!');
// Would produce: <input type="submit" name="mysubmit" value="Submit Post!" />
~~~
和其他的函数一样,如果你想添加额外的属性的话,可以传一个关联数组给第一个参数, 第三个参数可以向表单添加额外的数据,例如 JavaScript 。
form_reset([$data = ''[, $value = ''[, $extra = '']]])
参数:
* **$data** (string) -- Button name
* **$value** (string) -- Button value
* **$extra** (string) -- Extra attributes to be added to the tag as is
返回: An HTML input reset button tag
返回类型: string
用于生成一个标准的重置按钮。用法和 form_submit() 函数一样。
form_button([$data = ''[, $content = ''[, $extra = '']]])
参数:
* **$data** (string) -- Button name
* **$content** (string) -- Button label
* **$extra** (string) -- Extra attributes to be added to the tag as is
返回: An HTML button tag
返回类型: string
用于生成一个标准的按钮,你可以简单的使用名称和内容来生成按钮:
~~~
echo form_button('name','content');
// Would produce: <button name="name" type="button">Content</button>
~~~
或者使用一个关联数组,来包含任何你想要的数据:
~~~
$data = array(
'name' => 'button',
'id' => 'button',
'value' => 'true',
'type' => 'reset',
'content' => 'Reset'
);
echo form_button($data);
// Would produce: <button name="button" id="button" value="true" type="reset">Reset</button>
~~~
如果你还希望能包含一些额外的数据,譬如 JavaScript ,你可以通过第三个参数传一个字符串:
~~~
$js = 'onClick="some_function()"';
echo form_button('mybutton', 'Click Me', $js);
~~~
form_close([$extra = ''])
参数:
* **$extra** (string) -- Anything to append after the closing tag, as is
返回: An HTML form closing tag
返回类型:string
用于生成结束标签 ,使用这个函数唯一的一个好处是, 它可以在结束标签的后面加上一些其他的数据。例如:
> $string = ''; echo form_close($string); // Would produce:
set_value($field[, $default = ''[, $html_escape = TRUE]])
参数:
* **$field** (string) -- Field name
* **$default** (string) -- Default value
* **$html_escape** (bool) -- Whether to turn off HTML escaping of the value
返回: Field value
返回类型: string
用于你显示 input 或者 textarea 类型的输入框的值。你必须在第一个参数中指定名称, 第二个参数是可选的,允许你设置一个默认值,第三个参数也是可选,可以禁用对值的转义, 当你在和 form_input() 函数一起使用时,可以避免重复转义。
例如:
~~~
<input type="text" name="quantity" value="<?php echo set_value('quantity', '0'); ?>" size="50" />
~~~
当上面的表单元素第一次加载时将会显示 "0" 。
set_select($field[, $value = ''[, $default = FALSE]])
参数:
* **$field** (string) -- Field name
* **$value** (string) -- Value to check for
* **$default** (string) -- Whether the value is also a default one
返回: 'selected' attribute or an empty string
返回类型: string
如果你使用 下拉菜单,此函数允许你显示选中的菜单项。
第一个参数为下拉菜单的名称,第二个参数必须包含每个菜单项的值。 第三个参数是可选的,用于设置菜单项是否为默认选中状态(TRUE / FALSE)。
例如:
~~~
<select name="myselect">
<option value="one" <?php echo set_select('myselect', 'one', TRUE); ?> >One</option>
<option value="two" <?php echo set_select('myselect', 'two'); ?> >Two</option>
<option value="three" <?php echo set_select('myselect', 'three'); ?> >Three</option>
</select>
~~~
set_checkbox($field[, $value = ''[, $default = FALSE]])
参数:
* **$field** (string) -- Field name
* **$value** (string) -- Value to check for
* **$default** (string) -- Whether the value is also a default one
返回: 'checked' attribute or an empty string
返回类型: string
允许你显示一个处于提交状态的复选框。
第一个参数必须包含此复选框的名称,第二个参数必须包含它的值, 第三个参数是可选的,用于设置复选框是否为默认选中状态(TRUE / FALSE)。
例如:
~~~
<input type="checkbox" name="mycheck" value="1" <?php echo set_checkbox('mycheck', '1'); ?> />
<input type="checkbox" name="mycheck" value="2" <?php echo set_checkbox('mycheck', '2'); ?> />
~~~
set_radio($field[, $value = ''[, $default = FALSE]])
参数:
* **$field** (string) -- Field name
* **$value** (string) -- Value to check for
* **$default** (string) -- Whether the value is also a default one
返回: 'checked' attribute or an empty string
返回类型: string
允许你显示那些处于提交状态的单选框。 该函数和上面的 [set_checkbox()](http://codeigniter.org.cn/user_guide/helpers/form_helper.html#set_checkbox "set_checkbox") 函数一样。
例如:
~~~
<input type="radio" name="myradio" value="1" <?php echo set_radio('myradio', '1', TRUE); ?> />
<input type="radio" name="myradio" value="2" <?php echo set_radio('myradio', '2'); ?> />
~~~
注解
如果你正在使用表单验证类,你必须为你的每一个表单域指定一个规则, 即使是空的,这样可以确保 set_*() 函数能正常运行。 这是因为如果定义了一个表单验证对象,set_*() 函数的控制权将移交到表单验证类, 而不是辅助函数函数。
form_error([$field = ''[, $prefix = ''[, $suffix = '']]])
参数:
* **$field** (string) -- Field name
* **$prefix** (string) -- Error opening tag
* **$suffix** (string) -- Error closing tag
返回: HTML-formatted form validation error message(s)
返回类型: string
从 [表单验证类](http://codeigniter.org.cn/user_guide/libraries/form_validation.html) 返回验证错误消息, 并附上验证出错的域的名称,你可以设置错误消息的起始和结束标签。
例如:
~~~
// Assuming that the 'username' field value was incorrect:
echo form_error('myfield', '<div class="error">', '</div>');
// Would produce: <div class="error">Error message associated with the "username" field.</div>
~~~
validation_errors([$prefix = ''[, $suffix = '']])
参数:
* **$prefix** (string) -- Error opening tag
* **$suffix** (string) -- Error closing tag
返回: HTML-formatted form validation error message(s)
返回类型: string
和 [form_error()](http://codeigniter.org.cn/user_guide/helpers/form_helper.html#form_error "form_error") 函数类似,返回所有 [表单验证类](http://codeigniter.org.cn/user_guide/libraries/form_validation.html) 生成的错误信息,你可以为为每个错误消息设置起始和结束标签。
例如:
~~~
echo validation_errors('<span class="error">', '</span>');
/*
Would produce, e.g.:
<span class="error">The "email" field doesn't contain a valid e-mail address!</span>
<span class="error">The "password" field doesn't match the "repeat_password" field!</span>
*/
~~~
form_prep($str)
参数:
* **$str** (string) -- Value to escape
返回: Escaped value
返回类型: string
允许你在表单元素中安全的使用 HTML 和譬如引号这样的字符,而不用担心对表单造成破坏。
注解
如果你使用了这个页面上介绍的任何一个函数,表单的域值会被自动转义, 所以你无需再调用这个函数。只有在你创建自己的表单元素时需要使用它。
注解
该函数已经废弃,现在只是 [通用函数](http://codeigniter.org.cn/user_guide/general/common_functions.html) html_escape() 的一个别名,请使用 html_escape() 代替它。
文件辅助函数
最后更新于:2022-04-01 03:56:08
# 文件辅助函数
文件辅助函数文件包含了一些帮助你处理文件的函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/file_helper.html#id4)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('file');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/file_helper.html#id5)
该辅助函数有下列可用函数:
read_file($file)
参数:
* **$file** (string) -- File path
返回: File contents or FALSE on failure
返回类型: string
返回指定文件的内容。
例如:
~~~
$string = read_file('./path/to/file.php');
~~~
可以是相对路径或绝对路径,如果失败返回 FALSE 。
注解
路径是相对于你网站的 index.php 文件的,而不是相对于控制器或视图文件。 这是因为 CodeIgniter 使用的前端控制器,所以所有的路径都是相对于 index.php 所在路径。
注解
该函数已废弃,使用 PHP 的原生函数 file_get_contents() 代替。
重要
如果你的服务器配置了 **open_basedir** 限制,该函数可能无法访问限制之外的文件。
write_file($path, $data[, $mode = 'wb'])
参数:
* **$path** (string) -- File path
* **$data** (string) -- Data to write to file
* **$mode** (string) -- fopen() mode
返回: TRUE if the write was successful, FALSE in case of an error
返回类型: bool
向指定文件中写入数据,如果文件不存在,则创建该文件。
例如:
~~~
$data = 'Some file data';
if ( ! write_file('./path/to/file.php', $data))
{
echo 'Unable to write the file';
}
else
{
echo 'File written!';
}
~~~
你还可以通过第三个参数设置写模式:
~~~
write_file('./path/to/file.php', $data, 'r+');
~~~
默认的模式的 'wb' ,请阅读 [PHP 用户指南](http://php.net/manual/en/function.fopen.php) 了解写模式的选项。
注解
路径是相对于你网站的 index.php 文件的,而不是相对于控制器或视图文件。 这是因为 CodeIgniter 使用的前端控制器,所以所有的路径都是相对于 index.php 所在路径。
注解
该函数在写入文件时会申请一个排他性锁。
delete_files($path[, $del_dir = FALSE[, $htdocs = FALSE]])
参数:
* **$path** (string) -- Directory path
* **$del_dir** (bool) -- Whether to also delete directories
* **$htdocs** (bool) -- Whether to skip deleting .htaccess and index page files
返回: TRUE on success, FALSE in case of an error
返回类型: bool
删除指定路径下的所有文件。
例如:
~~~
delete_files('./path/to/directory/');
~~~
如果第二个参数设置为 TRUE ,那么指定路径下的文件夹也一并删除。
例如:
~~~
delete_files('./path/to/directory/', TRUE);
~~~
注解
要被删除的文件必须是当前系统用户所有或者是当前用户对之具有写权限。
get_filenames($source_dir[, $include_path = FALSE])
参数:
* **$source_dir** (string) -- Directory path
* **$include_path** (bool) -- Whether to include the path as part of the filenames
返回: An array of file names
返回类型: array
获取指定目录下所有文件名组成的数组。如果需要完整路径的文件名, 可以将第二个参数设置为 TRUE 。
例如:
~~~
$controllers = get_filenames(APPPATH.'controllers/');
~~~
get_dir_file_info($source_dir, $top_level_only)
参数:
* **$source_dir** (string) -- Directory path
* **$top_level_only** (bool) -- Whether to look only at the specified directory (excluding sub-directories)
返回: An array containing info on the supplied directory's contents
返回类型: array
获取指定目录下所有文件信息组成的数组,包括文件名、文件大小、日期 和 权限。 默认不包含子目录下的文件信息,如有需要,可以设置第二个参数为 FALSE ,这可能会是一个耗时的操作。
例如:
~~~
$models_info = get_dir_file_info(APPPATH.'models/');
~~~
get_file_info($file[, $returned_values = array('name', 'server_path', 'size', 'date')])
参数:
* **$file** (string) -- File path
* **$returned_values** (array) -- What type of info to return
返回: An array containing info on the specified file or FALSE on failure
返回类型: array
获取指定文件的信息,包括文件名、路径、文件大小,修改日期等。第二个参数可以用于 声明只返回回你想要的信息。
第二个参数 $returned_values 有效的值有:name、size、date、readable、writeable、 executable 和 fileperms 。
get_mime_by_extension($filename)
参数:
* **$filename** (string) -- File name
返回: MIME type string or FALSE on failure
返回类型: string
根据 config/mimes.php 文件中的配置将文件扩展名转换为 MIME 类型。 如果无法判断 MIME 类型或 MIME 配置文件读取失败,则返回 FALSE 。
~~~
$file = 'somefile.png';
echo $file.' is has a mime type of '.get_mime_by_extension($file);
~~~
注解
这个函数只是一种简便的判断 MIME 类型的方法,并不准确,所以 请不要用于安全相关的地方。
symbolic_permissions($perms)
参数:
* **$perms** (int) -- Permissions
返回: Symbolic permissions string
返回类型: string
将文件权限的数字格式(譬如 fileperms() 函数的返回值)转换为标准的符号格式。
~~~
echo symbolic_permissions(fileperms('./index.php')); // -rw-r--r--
~~~
octal_permissions($perms)
参数:
* **$perms** (int) -- Permissions
返回: Octal permissions string
返回类型: string
将文件权限的数字格式(譬如 fileperms() 函数的返回值)转换为三个字符的八进制表示格式。
~~~
echo octal_permissions(fileperms('./index.php')); // 644
~~~
邮件辅助函数
最后更新于:2022-04-01 03:56:06
# 邮件辅助函数
邮件辅助函数文件包含了用于处理邮件的一些函数。欲了解关于邮件更全面的解决方案, 可以参考 CodeIgniter 的 [Email 类](http://codeigniter.org.cn/user_guide/libraries/email.html) 。
>[danger] 重要
> 不鼓励继续使用邮件辅助函数,这个库当前仅是为了向前兼容而存在。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/email_helper.html#id4)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('email');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/email_helper.html#id5)
该辅助函数有下列可用函数:
valid_email($email)
参数:
* **$email** (string) -- E-mail address
返回: TRUE if a valid email is supplied, FALSE otherwise
返回类型: bool
检查 Email 地址格式是否正确,注意该函数只是简单的检查它的格式是否正确, 并不能保证该 Email 地址能接受到邮件。
Example:
~~~
if (valid_email('email@somesite.com'))
{
echo 'email is valid';
}
else
{
echo 'email is not valid';
}
~~~
注解
该函数实际上就是调用 PHP 原生的 filter_var() 函数而已:
~~~
(bool) filter_var($email, FILTER_VALIDATE_EMAIL);
~~~
send_email($recipient, $subject, $message)
参数:
* **$recipient** (string) -- E-mail address
* **$subject** (string) -- Mail subject
* **$message** (string) -- Message body
返回: TRUE if the mail was successfully sent, FALSE in case of an error
返回类型: bool
使用 PHP 函数 [mail()](http://php.net/function.mail) 发送邮件。
注解
该函数实际上就是调用 PHP 原生的 mail() 函数而已
~~~
mail($recipient, $subject, $message);
~~~
欲了解关于邮件更全面的解决方案,可以参考 CodeIgniter 的 [Email 类](http://codeigniter.org.cn/user_guide/libraries/email.html) 。
下载辅助函数
最后更新于:2022-04-01 03:56:04
# 下载辅助函数
下载辅助函数文件包含了下载相关的一些函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/download_helper.html#id4)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('download');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/download_helper.html#id5)
该辅助函数有下列可用函数:
force_download([$filename = ''[, $data = ''[, $set_mime = FALSE]]])
参数:
* **$filename** (string) -- Filename
* **$data** (mixed) -- File contents
* **$set_mime** (bool) -- Whether to try to send the actual MIME type
返回类型: void
生成 HTTP 头强制下载数据到客户端,这在实现文件下载时很有用。 第一个参数为下载文件名称,第二个参数为文件数据。
如果第二个参数为空,并且 $filename 参数是一个存在并可读的文件路径, 那么这个文件的内容将被下载。
如果第三个参数设置为 TRUE,那么将发送文件实际的 MIME 类型(根据文件的扩展名), 这样你的浏览器会根据该 MIME 类型来处理。
Example:
~~~
$data = 'Here is some text!';
$name = 'mytext.txt';
force_download($name, $data);
~~~
下载一个服务器上已存在的文件的例子如下:
~~~
// Contents of photo.jpg will be automatically read
force_download('/path/to/photo.jpg', NULL);
~~~
目录辅助函数
最后更新于:2022-04-01 03:56:01
# 目录辅助函数
目录辅助函数文件包含了一些帮助你处理目录的函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/directory_helper.html#id4)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('directory');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/directory_helper.html#id5)
该辅助函数有下列可用函数:
directory_map($source_dir[, $directory_depth = 0[, $hidden = FALSE]])
参数:
* **$source_dir** (string) -- Path to the source directory
* **$directory_depth** (int) -- Depth of directories to traverse (0 = fully recursive, 1 = current dir, etc)
* **$hidden** (bool) -- Whether to include hidden directories
返回: An array of files
返回类型: array
举例:
~~~
$map = directory_map('./mydirectory/');
~~~
注解
路径总是相对于你的 index.php 文件。
如果目录内含有子目录,也将被列出。你可以使用第二个参数(整数) 来控制递归的深度。如果深度为 1,则只列出根目录:
~~~
$map = directory_map('./mydirectory/', 1);
~~~
默认情况下,返回的数组中不会包括那些隐藏文件。如果需要显示隐藏的文件, 你可以设置第三个参数为 true
~~~
$map = directory_map('./mydirectory/', FALSE, TRUE);
~~~
每一个目录的名字都将作为数组的索引,目录所包含的文件将以数字作为索引。 下面有个典型的数组示例:
~~~
Array (
[libraries] => Array
(
[0] => benchmark.html
[1] => config.html
["database/"] => Array
(
[0] => query_builder.html
[1] => binds.html
[2] => configuration.html
[3] => connecting.html
[4] => examples.html
[5] => fields.html
[6] => index.html
[7] => queries.html
)
[2] => email.html
[3] => file_uploading.html
[4] => image_lib.html
[5] => input.html
[6] => language.html
[7] => loader.html
[8] => pagination.html
[9] => uri.html
)
~~~
日期辅助函数
最后更新于:2022-04-01 03:55:59
# 日期辅助函数
日期辅助函数文件包含了一些帮助你处理日期的函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/date_helper.html#id6)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('date');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/date_helper.html#id7)
该辅助函数有下列可用函数:
now([$timezone = NULL])
参数:
* **$timezone** (string) -- Timezone
返回: UNIX timestamp
返回类型: int
根据服务器的本地时间,以及一个 PHP 支持的时区参数或配置文件中的 "基准时间" 参数返回当前时间的 UNIX 时间戳, 如果你不打算设置 "基准时间" (如果你的站点允许用户设置他们自己的时区,你通常需要设置这个), 该函数就和 PHP 的 time() 函数没什么区别。
~~~
echo now('Australia/Victoria');
~~~
如果没有指定时区,该函数将使用 **time_reference** 参数调用 time() 函数。
mdate([$datestr = ''[, $time = '']])
参数:
* **$datestr** (string) -- Date string
* **$time** (int) -- UNIX timestamp
返回: MySQL-formatted date
返回类型: string
该函数和 PHP 的 [date()](http://php.net/manual/en/function.date.php) 函数一样, 但是它支持 MySQL 风格的日期格式,在代码之前使用百分号,例如:%Y %m %d
使用这个函数的好处是你不用关心去转义那些不是日期代码的字符,如果使用 date() 函数时,你就要这么做。
例如:
~~~
$datestring = 'Year: %Y Month: %m Day: %d - %h:%i %a';
$time = time();
echo mdate($datestring, $time);
~~~
如果第二个参数没有提供一个时间,那么默认会使用当前时间。
standard_date([$fmt = 'DATE_RFC822'[, $time = NULL]])
参数:
* **$fmt** (string) -- Date format
* **$time** (int) -- UNIX timestamp
返回: Formatted date or FALSE on invalid format
返回类型: string
生成标准格式的时间字符串。
例如:
~~~
$format = 'DATE_RFC822';
$time = time();
echo standard_date($format, $time);
~~~
注解
该函数已经废弃,请使用原生的 date() 函数和 [时间格式化常量](http://php.net/manual/en/class.datetime.php#datetime.constants.types) 替代:
~~~
echo date(DATE_RFC822, time());
~~~
**支持的格式:**
| Constant | Description | Example |
| --- | --- | --- |
| DATE_ATOM | Atom | 2005-08-15T16:13:03+0000 |
| DATE_COOKIE | HTTP Cookies | Sun, 14 Aug 2005 16:13:03 UTC |
| DATE_ISO8601 | ISO-8601 | 2005-08-14T16:13:03+00:00 |
| DATE_RFC822 | RFC 822 | Sun, 14 Aug 05 16:13:03 UTC |
| DATE_RFC850 | RFC 850 | Sunday, 14-Aug-05 16:13:03 UTC |
| DATE_RFC1036 | RFC 1036 | Sunday, 14-Aug-05 16:13:03 UTC |
| DATE_RFC1123 | RFC 1123 | Sun, 14 Aug 2005 16:13:03 UTC |
| DATE_RFC2822 | RFC 2822 | Sun, 14 Aug 2005 16:13:03 +0000 |
| DATE_RSS | RSS | Sun, 14 Aug 2005 16:13:03 UTC |
| DATE_W3C | W3C | 2005-08-14T16:13:03+0000 |
local_to_gmt([$time = ''])
参数:
* **$time** (int) -- UNIX timestamp
返回: UNIX timestamp
返回类型: int
将时间转换为 GMT 时间。
例如:
~~~
$gmt = local_to_gmt(time());
~~~
gmt_to_local([$time = ''[, $timezone = 'UTC'[, $dst = FALSE]]])
参数:
* **$time** (int) -- UNIX timestamp
* **$timezone** (string) -- Timezone
* **$dst** (bool) -- Whether DST is active
返回: UNIX timestamp
返回类型: int
根据指定的时区和 DST (夏令时,Daylight Saving Time) 将 GMT 时间转换为本地时间。
例如:
~~~
$timestamp = 1140153693;
$timezone = 'UM8';
$daylight_saving = TRUE;
echo gmt_to_local($timestamp, $timezone, $daylight_saving);
~~~
注解
时区列表请参见本页末尾。
mysql_to_unix([$time = ''])
参数:
* **$time** (string) -- MySQL timestamp
返回: UNIX timestamp
返回类型: int
将 MySQL 时间戳转换为 UNIX 时间戳。
例如:
~~~
$unix = mysql_to_unix('20061124092345');
~~~
unix_to_human([$time = ''[, $seconds = FALSE[, $fmt = 'us']]])
参数:
* **$time** (int) -- UNIX timestamp
* **$seconds** (bool) -- Whether to show seconds
* **$fmt** (string) -- format (us or euro)
返回: Formatted date
返回类型: string
将 UNIX 时间戳转换为方便人类阅读的格式,如下:
~~~
YYYY-MM-DD HH:MM:SS AM/PM
~~~
这在当你需要在一个表单字段中显示日期时很有用。
格式化后的时间可以带也可以不带秒数,也可以设置成欧洲或美国时间格式。 如果只指定了一个时间参数,将使用不带秒数的美国时间格式。
例如:
~~~
$now = time();
echo unix_to_human($now); // U.S. time, no seconds
echo unix_to_human($now, TRUE, 'us'); // U.S. time with seconds
echo unix_to_human($now, TRUE, 'eu'); // Euro time with seconds
~~~
human_to_unix([$datestr = ''])
参数:
* **$datestr** (int) -- Date string
返回: UNIX timestamp or FALSE on failure
返回类型: int
该函数和 [unix_to_human()](http://codeigniter.org.cn/user_guide/helpers/date_helper.html#unix_to_human "unix_to_human") 函数相反,将一个方便人类阅读的时间格式转换为 UNIX 时间戳。 这在当你需要在一个表单字段中显示日期时很有用。如果输入的时间不同于上面的格式,函数返回 FALSE 。
例如:
~~~
$now = time();
$human = unix_to_human($now);
$unix = human_to_unix($human);
~~~
nice_date([$bad_date = ''[, $format = FALSE]])
参数:
* **$bad_date** (int) -- The terribly formatted date-like string
* **$format** (string) -- Date format to return (same as PHP's date() function)
返回: Formatted date
返回类型: string
该函数解析一个没有格式化过的数字格式的日期,并将其转换为格式化的日期。它也能解析格式化好的日期。
默认该函数将返回 UNIX 时间戳,你也可以提供一个格式化字符串给第二个参数(和 PHP 的 date() 函数一样)。
例如:
~~~
$bad_date = '199605';
// Should Produce: 1996-05-01
$better_date = nice_date($bad_date, 'Y-m-d');
$bad_date = '9-11-2001';
// Should Produce: 2001-09-11
$better_date = nice_date($bad_date, 'Y-m-d');
~~~
timespan([$seconds = 1[, $time = ''[, $units = '']]])
参数:
* **$seconds** (int) -- Number of seconds
* **$time** (string) -- UNIX timestamp
* **$units** (int) -- Number of time units to display
返回: Formatted time difference
返回类型: string
将一个 UNIX 时间戳转换为以下这种格式:
~~~
1 Year, 10 Months, 2 Weeks, 5 Days, 10 Hours, 16 Minutes
~~~
第一个参数为一个 UNIX 时间戳,第二个参数是一个比第一个参数大的 UNIX 时间戳。 第三个参数可选,用于限制要显示的时间单位个数。
如果第二个参数为空,将使用当前时间。
这个函数最常见的用途是,显示从过去某个时间点到当前时间经过了多少时间。
例如:
~~~
$post_date = '1079621429';
$now = time();
$units = 2;
echo timespan($post_date, $now, $units);
~~~
注解
该函数生成的本文可以在语言文件 language//date_lang.php 中找到。
days_in_month([$month = 0[, $year = '']])
参数:
* **$month** (int) -- a numeric month
* **$year** (int) -- a numeric year
返回: Count of days in the specified month
返回类型: int
返回指定某个月的天数,会考虑闰年。
例如:
~~~
echo days_in_month(06, 2005);
~~~
如果第二个参数为空,将使用今年。
注解
该函数其实是原生的 cal_days_in_month() 函数的别名,如果它可用的话。
date_range([$unix_start = ''[, $mixed = ''[, $is_unix = TRUE[, $format = 'Y-m-d']]]])
参数:
* **$unix_start** (int) -- UNIX timestamp of the range start date
* **$mixed** (int) -- UNIX timestamp of the range end date or interval in days
* **$is_unix** (bool) -- set to FALSE if $mixed is not a timestamp
* **$format** (string) -- Output date format, same as in date()
返回: An array of dates
返回类型: array
返回某一段时间的日期列表。
例如:
~~~
$range = date_range('2012-01-01', '2012-01-15');
echo "First 15 days of 2012:";
foreach ($range as $date)
{
echo $date."\n";
}
~~~
timezones([$tz = ''])
参数:
* **$tz** (string) -- A numeric timezone
返回: Hour difference from UTC
返回类型: int
根据指定的时区(可用的时区列表参见下文的 "时区参考")返回它的 UTC 时间偏移。
例如:
~~~
echo timezones('UM5');
~~~
这个函数和 [timezone_menu()](http://codeigniter.org.cn/user_guide/helpers/date_helper.html#timezone_menu "timezone_menu") 函数一起使用时很有用。
timezone_menu([$default = 'UTC'[, $class = ''[, $name = 'timezones'[, $attributes = '']]]])
参数:
* **$default** (string) -- Timezone
* **$class** (string) -- Class name
* **$name** (string) -- Menu name
* **$attributes** (mixed) -- HTML attributes
返回: HTML drop down menu with time zones
返回类型: string
该函数用于生成一个时区下拉菜单,像下面这样。
(UTC -12:00) Baker/Howland Island (UTC -11:00) Samoa Time Zone, Niue (UTC -10:00) Hawaii-Aleutian Standard Time, Cook Islands, Tahiti (UTC -9:30) Marquesas Islands (UTC -9:00) Alaska Standard Time, Gambier Islands (UTC -8:00) Pacific Standard Time, Clipperton Island (UTC -7:00) Mountain Standard Time (UTC -6:00) Central Standard Time (UTC -5:00) Eastern Standard Time, Western Caribbean Standard Time (UTC -4:30) Venezuelan Standard Time (UTC -4:00) Atlantic Standard Time, Eastern Caribbean Standard Time (UTC -3:30) Newfoundland Standard Time (UTC -3:00) Argentina, Brazil, French Guiana, Uruguay (UTC -2:00) South Georgia/South Sandwich Islands (UTC -1:00) Azores, Cape Verde Islands (UTC) Greenwich Mean Time, Western European Time (UTC +1:00) Central European Time, West Africa Time (UTC +2:00) Central Africa Time, Eastern European Time, Kaliningrad Time (UTC +3:00) Moscow Time, East Africa Time (UTC +3:30) Iran Standard Time (UTC +4:00) Azerbaijan Standard Time, Samara Time (UTC +4:30) Afghanistan (UTC +5:00) Pakistan Standard Time, Yekaterinburg Time (UTC +5:30) Indian Standard Time, Sri Lanka Time (UTC +5:45) Nepal Time (UTC +6:00) Bangladesh Standard Time, Bhutan Time, Omsk Time (UTC +6:30) Cocos Islands, Myanmar (UTC +7:00) Krasnoyarsk Time, Cambodia, Laos, Thailand, Vietnam (UTC +8:00) Australian Western Standard Time, Beijing Time, Irkutsk Time (UTC +8:45) Australian Central Western Standard Time (UTC +9:00) Japan Standard Time, Korea Standard Time, Yakutsk Time (UTC +9:30) Australian Central Standard Time (UTC +10:00) Australian Eastern Standard Time, Vladivostok Time (UTC +10:30) Lord Howe Island (UTC +11:00) Srednekolymsk Time, Solomon Islands, Vanuatu (UTC +11:30) Norfolk Island (UTC +12:00) Fiji, Gilbert Islands, Kamchatka Time, New Zealand Standard Time (UTC +12:45) Chatham Islands Standard Time (UTC +13:00) Phoenix Islands Time, Tonga (UTC +14:00) Line Islands
当你的站点允许用户选择自己的本地时区时,这个菜单会很有用。
第一个参数为菜单默认选定的时区,例如,要设置太平洋时间为默认值,你可以这样:
~~~
echo timezone_menu('UM8');
~~~
菜单中的值请参见下面的时区参考。
第二个参数用于为菜单设置一个 CSS 类名。
第四个参数用于为生成的 select 标签设置一个或多个属性。
注解
菜单中的文本可以在语言文件 language//date_lang.php 中找到。
## [时区参考](http://codeigniter.org.cn/user_guide/helpers/date_helper.html#id8)
下表列出了每个时区和它所对应的位置。
注意,为了表述清晰和格式工整,有些位置信息做了适当的删减。
| 时区 | 位置 |
| --- | --- |
| UM12 | (UTC - 12:00) 贝克岛、豪兰岛 |
| UM11 | (UTC - 11:00) 萨摩亚时区、纽埃 |
| UM10 | (UTC - 10:00) 夏威夷-阿留申标准时间、库克群岛 |
| UM95 | (UTC - 09:30) 马克萨斯群岛 |
| UM9 | (UTC - 09:00) 阿拉斯加标准时间、甘比尔群岛 |
| UM8 | (UTC - 08:00) 太平洋标准时间、克利珀顿岛 |
| UM7 | (UTC - 07:00) 山区标准时间 |
| UM6 | (UTC - 06:00) 中部标准时间 |
| UM5 | (UTC - 05:00) 东部标准时间、西加勒比 |
| UM45 | (UTC - 04:30) 委内瑞拉标准时间 |
| UM4 | (UTC - 04:00) 大西洋标准时间、东加勒比 |
| UM35 | (UTC - 03:30) 纽芬兰标准时间 |
| UM3 | (UTC - 03:00) 阿根廷、巴西、法属圭亚那、乌拉圭 |
| UM2 | (UTC - 02:00) 南乔治亚岛、南桑威奇群岛 |
| UM1 | (UTC -1:00) 亚速尔群岛、佛得角群岛 |
| UTC | (UTC) 格林尼治标准时间、西欧时间 |
| UP1 | (UTC +1:00) 中欧时间、西非时间 |
| UP2 | (UTC +2:00) 中非时间、东欧时间 |
| UP3 | (UTC +3:00) 莫斯科时间、东非时间 |
| UP35 | (UTC +3:30) 伊朗标准时间 |
| UP4 | (UTC +4:00) 阿塞拜疆标准时间、萨马拉时间 |
| UP45 | (UTC +4:30) 阿富汗 |
| UP5 | (UTC +5:00) 巴基斯坦标准时间、叶卡捷琳堡时间 |
| UP55 | (UTC +5:30) 印度标准时间、斯里兰卡时间 |
| UP575 | (UTC +5:45) 尼泊尔时间 |
| UP6 | (UTC +6:00) 孟加拉国标准时间、不丹时间、鄂木斯克时间 |
| UP65 | (UTC +6:30) 可可岛、缅甸 |
| UP7 | (UTC +7:00) 克拉斯诺亚尔斯克时间、柬埔寨、老挝、泰国、越南 |
| UP8 | (UTC +8:00) 澳大利亚西部标准时间、北京时间 |
| UP875 | (UTC +8:45) 澳大利亚中西部标准时间 |
| UP9 | (UTC +9:00) 日本标准时间、韩国标准时间、雅库茨克 |
| UP95 | (UTC +9:30) 澳大利亚中部标准时间 |
| UP10 | (UTC +10:00) 澳大利亚东部标准时间、海参崴时间 |
| UP105 | (UTC +10:30) 豪勋爵岛 |
| UP11 | (UTC +11:00) 中科雷姆斯克时间、所罗门群岛、瓦努阿图 |
| UP115 | (UTC +11:30) 诺福克岛 |
| UP12 | (UTC +12:00) 斐济、吉尔伯特群岛、堪察加半岛、新西兰 |
| UP1275 | (UTC +12:45) 查塔姆群岛标准时间 |
| UP13 | (UTC +13:00) 凤凰岛、汤加 |
| UP14 | (UTC +14:00) 莱恩群岛 |
Cookie 辅助函数
最后更新于:2022-04-01 03:55:57
# Cookie 辅助函数
Cookie 辅助函数文件包含了一些帮助你处理 Cookie 的函数。
[TOC=2,3]
## [加载辅助函数](http://codeigniter.org.cn/user_guide/helpers/cookie_helper.html#id3)
该辅助函数通过下面的代码加载:
~~~
$this->load->helper('cookie');
~~~
## [可用函数](http://codeigniter.org.cn/user_guide/helpers/cookie_helper.html#id4)
该辅助函数有下列可用函数:
set_cookie($name[, $value = ''[, $expire = ''[, $domain = ''[, $path = '/'[, $prefix = ''[, $secure = FALSE[, $httponly = FALSE]]]]]]]])
参数:
* **$name** (mixed) -- Cookie name or associative array of all of the parameters available to this function
* **$value** (string) -- Cookie value
* **$expire** (int) -- Number of seconds until expiration
* **$domain** (string) -- Cookie domain (usually: .yourdomain.com)
* **$path** (string) -- Cookie path
* **$prefix** (string) -- Cookie name prefix
* **$secure** (bool) -- Whether to only send the cookie through HTTPS
* **$httponly** (bool) -- Whether to hide the cookie from JavaScript
返回类型: void
该辅助函数提供给你一种更友好的语法来设置浏览器 Cookie,参考 [输入类](http://codeigniter.org.cn/user_guide/libraries/input.html) 获取它的详细用法,另外,它是 CI_Input::set_cookie() 函数的别名。
get_cookie($index[, $xss_clean = NULL]])
参数:
* **$index** (string) -- Cookie name
* **$xss_clean** (bool) -- Whether to apply XSS filtering to the returned value
返回: The cookie value or NULL if not found
返回类型: mixed
该辅助函数提供给你一种更友好的语法来获取浏览器 Cookie,参考 [输入类](http://codeigniter.org.cn/user_guide/libraries/input.html) 获取它的详细用法,同时,这个函数 和 CI_Input::cookie() 函数非常类似,只是它会根据配置文件 application/config/config.php 中的 $config['cookie_prefix'] 参数 来作为 Cookie 的前缀。
delete_cookie($name[, $domain = ''[, $path = '/'[, $prefix = '']]]])
参数:
* **$name** (string) -- Cookie name
* **$domain** (string) -- Cookie domain (usually: .yourdomain.com)
* **$path** (string) -- Cookie path
* **$prefix** (string) -- Cookie name prefix
返回类型: void
删除一条 Cookie,只需要传入 Cookie 名即可,也可以设置路径或其他参数 来删除特定 Cookie。
~~~
delete_cookie('name');
~~~
这个函数和 set_cookie() 比较类似,只是它并不提供 Cookie 的值和 过期时间等参数。第一个参数也可以是个数组,包含多个要删除的 Cookie 。 另外,你也可以像下面这样删除特定条件的 Cookie 。
~~~
delete_cookie($name, $domain, $path, $prefix);
~~~