分享

10.1笔记

 Fujie_2014 2014-10-02
1.mb_split — 使用正则表达式分割多字节字符串 
说明
array mb_split (string $pattern , string $string[,int $limit = -1])
使用正则表达式 pattern 分割多字节 string 并返回结果 array 。 
参数
pattern
正则表达式。 
string 
待分割的 string 。 
limit 
如果指定了可选参数 limit,将最多分割为 limit 个元素。  
返回值
array 的结果。 

2.多字节
一般的ascii字符是用一个字节表示的,就是单字节。
特殊字符,非英语的字符(比如汉字等)需要用两个字节表示,就是多字节,也称为宽字符。
unicode就是一种多字节编码方式
今天看到smarty通过判断mb_split函数是否存在从而判断使用哪种编码
if (!defined('SMARTY_MBSTRING')) {
define('SMARTY_MBSTRING', function_exists('mb_split'));
}
if (!defined('SMARTY_RESOURCE_CHAR_SET')) {
// UTF-8 can only be done properly when mbstring is available!
/**
* @deprecated in favor of Smarty::$_CHARSET
*/
define('SMARTY_RESOURCE_CHAR_SET', SMARTY_MBSTRING ? 'UTF-8' : 'ISO-8859-1');
}
3.时间格式
smarty
if (!defined('SMARTY_RESOURCE_DATE_FORMAT')) {
/**
* @deprecated in favor of Smarty::$_DATE_FORMAT
*/
define('SMARTY_RESOURCE_DATE_FORMAT', '%b %-e, %Y');
}

%a - 当前区域星期几的简写
%A - 当前区域星期几的全称
%b - 当前区域月份的简写
%B - 当前区域月份的全称
%c - 当前区域首选的日期时间表达
%C - 世纪值(年份除以 100 后取整,范围从 00 到 99)
%d - 月份中的第几天,十进制数字(范围从 01 到 31)
%D - 和 %m/%d/%y 一样
%e - 月份中的第几天,十进制数字,一位的数字前会加上一个空格(范围从 ' 1' 到 '31')
%g - 和 %G 一样,但是没有世纪
%G - 4 位数的年份,符合 ISO 星期数(参见 %V)。和 %V 的格式和值一样,只除了如 果 ISO 星期数属于前一年或者后一年,则使用那一年。
%h - 和 %b 一样
%H - 24 小时制的十进制小时数(范围从 00 到 23)
%I - 12 小时制的十进制小时数(范围从 00 到 12)
%j - 年份中的第几天,十进制数(范围从 001 到 366)
%m - 十进制月份(范围从 01 到 12)
%M - 十进制分钟数
%n - 换行符
%p - 根据给定的时间值为 `am' 或 `pm',或者当前区域设置中的相应字符串
%r - 用 a.m. 和 p.m. 符号的时间
%R - 24 小时符号的时间
%S - 十进制秒数
%t - 制表符
%T - 当前时间,和 %H:%M:%S 一样
%u - 星期几的十进制数表达 [1,7],1 表示星期一 Warning
尽管 ISO 9889:1999(当前的 C 标准)明确指出一周从星期一开始,
但是 Sun Solaris 的一周似乎从星期天开始并作为 1。

%U - 本年的第几周,从第一周的第一个星期天作为第一天开始
%V - 本年第几周的 ISO 8601:1988 格式,范围从 01 到 53,
第 1 周是本年第一个至少还有 4 天的星期,星期一作为每周的第一天。
(用 %G 或者 %g 作为指定时间戳相应周数的年份组成。)
 
%W - 本年的第几周数,从第一周的第一个星期一作为第一天开始
%w - 星期中的第几天,星期天为 0
%x - 当前区域首选的时间表示法,不包括时间
%X - 当前区域首选的时间表示法,不包括日期
%y - 没有世纪数的十进制年份(范围从 00 到 99)
%Y - 包括世纪数的十进制年份
%Z 或 %z - 时区名或缩写
%% - 文字上的 `%' 字符

4.is_callable — 检测参数是否为合法的可调用结构  
说明
bool is_callable ( callable $name [,bool $syntax_only = false[,string &$callable_name]])
验证变量的内容能否作为函数调用。 
这可以检查包含有效函数名的变量,或者一个数组,包含了正确编码的对象以及函数名。 
参数
name 
要检查的回调函数。 
syntax_only 
如果设置为 TRUE ,这个函数仅仅验证 name 可能是函数或方法。
它仅仅拒绝非字符,或者未包含能用于回调函数的有效结构。
有效的应该包含两个元素,第一个是一个对象或者字符,第二个元素是个字符。 
callable_name 
接受“可调用的名称”。下面的例子是“someClass::someMethod”。 
注意,尽管 someClass::SomeMethod() 的含义是可调用的静态方法,但例子的情况并不是这样的。 
返回值
如果 name 可调用则返回 TRUE ,否则返回 FALSE 。 
5.当前脚本路径
$_SERVER['SCRIPT_NAME']  /test/ser.php
__FILE__  C:\wamp\www\test\ser.php
6.trigger_error — 产生一个用户级别的 error/warning/notice 信息 
说明
bool trigger_error ( string $error_msg [,int $error_type = E_USER_NOTICE ] )
用于触发一个用户级别的错误条件,它能结合内置的错误处理器所关联,
或者可以使用用户定义的函数作为新的错误处理程序( set_error_handler() )。 
该函数在你运行出现异常时,需要产生一个特定的响应时非常有用。 
参数
error_msg 该 error 的特定错误信息,长度限制在了1024个字符。超过1024长度的字符都会被截断。 
error_type 该 error 所特定的错误类型。仅 E_USER 系列常量对其有效,默认是 E_USER_NOTICE 。 
返回值
如果指定了错误的 error_type 会返回 FALSE  ,正确则返回 TRUE 
7.get_class — 返回对象的类名 
说明
string get_class  ([ object $obj  ] )
返回对象实例 obj 所属类的名字。如果 obj 不是一个对象则返回 FALSE 。 
Note: 
在 PHP 扩展库中定义的类返回其原始定义的名字。
在 PHP 4 中 get_class()返回用户定义的类名的小写形式,
但是在 PHP 5 中将返回类名定义时的名字,如同扩展库中的类名一样。  
Note: 
自 PHP 5 起,如果在对象的方法中调用则 obj 为可选项。 
8.mb_internal_encoding — 设置/获取内部字符编码 
说明
mixed  mb_internal_encoding([string $encoding = mb_internal_encoding()])
设置/获取内部字符编码 
参数
encoding 
encoding 字符编码名称使用于 HTTP 输入字符编码转换、HTTP 输出字符编码转换、mbstring 模块系列函数字符编码转换的默认编码。
You should notice that the internal encoding is totally different from the one for multibyte regex. 
返回值
如果设置了 encoding,则成功时返回 TRUE ,或者在失败时返回 FALSE 。 
In this case, the character encoding for multibyte regex is NOT changed. 
如果省略了 encoding,则返回当前的字符编码名称。
9.属性重载
public void  __set  ( string $name  , mixed  $value  )
public mixed  __get  ( string $name  )
public bool __isset  ( string $name  )
public void  __unset  ( string $name  )
在给不可访问属性赋值时,__set() 会被调用。 
读取不可访问属性的值时,__get() 会被调用。 
当对不可访问属性调用 isset()  或 empty()  时,__isset() 会被调用。 
当对不可访问属性调用 unset()  时,__unset() 会被调用。 
参数 $name  是指要操作的变量名称。__set() 方法的 $value  参数指定了 $name  变量的值。 
属性重载只能在对象中进行。在静态方法中,这些魔术方法将不会被调用。
所以这些方法都不能被声明为 static。从 PHP 5.3.0 起, 将这些魔术方法定义为 static 会产生一个警告。 
10.str_replace — 子字符串替换 
说明
mixed str_replace (mixed $search, mixed  $replace, mixed $subject[,int &$count])
该函数返回一个字符串或者数组。该字符串或数组是将 subject 中全部的 search 都被 replace 替换之后的结果。 
如果没有一些特殊的替换需求(比如正则表达式),你应该使用该函数替换 ereg_replace()  和 preg_replace() 。 
参数
如果 search 和 replace 为数组,那么 str_replace()  将对 subject 做二者的映射替换。
如果 replace 的值的个数少于 search 的个数,多余的替换将使用空字符串来进行。
如果 search 是一个数组而 replace 是一个字符串,那么 search 中每个元素的替换将始终使用这个字符串。该转换不会改变大小写。 
如果 search 和 replace 都是数组,它们的值将会被依次处理。 
search 
查找的目标值,也就是 needle。一个数组可以指定多个目标。 
replace 
search 的替换值。一个数组可以被用来指定多重替换。 
subject 
执行替换的数组或者字符串。也就是 haystack。 
如果 subject 是一个数组,替换操作将遍历整个 subject,返回值也将是一个数组。 
count 
如果被指定,它的值将被设置为替换发生的次数。 
返回值
该函数返回替换后的数组或者字符串。

11.rtrim — 删除字符串末端的空白字符(或者其他字符) 
说明
string rtrim  ( string $str  [, string $charlist  ] )
该函数删除 str 末端的空白字符并返回。 
不使用第二个参数, rtrim()  仅删除以下字符: 
1. " " (ASCII 32 (0x20)),普通空白符。  
2. "\t" (ASCII 9 (0x09)),制表符。  
3. "\n" (ASCII 10 (0x0A)),换行符。  
4. "\r" (ASCII 13 (0x0D)),回车符。  
5. "\0" (ASCII 0 (0x00)),NUL 空字节符。  
6. "\x0B" (ASCII 11 (0x0B)),垂直制表符。  
参数
str 
输入字符串。 
charlist 
通过指定 charlist,可以指定想要删除的字符列表。
简单地列出你想要删除的全部字符。使用 .. 格式,可以指定一个范围。 
返回值
返回改变后的字符串。 

12.魔术方法
(1)__sleep() 和 __wakeup() 
public array __sleep  ( void )
void  __wakeup  ( void )
serialize()函数会检查类中是否存在一个魔术方法 __sleep()。如果存在,该方法会先被调用,然后才执行序列化操作。
此功能可以用于清理对象,并返回一个包含对象中所有应被序列化的变量名称的数组。
如果该方法未返回任何内容,则 NULL 被序列化,并产生一个 E_NOTICE  级别的错误。 
Note: 
__sleep() 不能返回父类的私有成员的名字。这样做会产生一个 E_NOTICE  级别的错误。可以用 Serializable 接口来替代。 
__sleep() 方法常用于提交未提交的数据,或类似的清理操作。同时,如果有一些很大的对象,但不需要全部保存,这个功能就很好用。 
与之相反, unserialize()  会检查是否存在一个 __wakeup() 方法。如果存在,则会先调用 __wakeup 方法,预先准备对象需要的资源。 
__wakeup()
经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。  


(2)__toString() 
public string __toString( void )
__toString()方法用于一个类被当成字符串时应怎样回应。例如 echo $obj; 应该显示些什么。
此方法必须返回一个字符串,否则将发出一条 E_RECOVERABLE_ERROR  级别的致命错误。 
Warning 
不能在 __toString()方法中抛出异常。这么做会导致致命错误。 
需要指出的是在 PHP 5.2.0 之前,__toString() 方法只有在直接使用于 echo  或 print  时才能生效。
PHP 5.2.0 之后,则可以在任何字符串环境生效(例如通过 printf() ,使用 %s 修饰符),但不能用于非字符串环境(如使用 %d 修饰符)。
自 PHP 5.2.0 起,如果将一个未定义 __toString() 方法的对象转换为字符串,会产生 E_RECOVERABLE_ERROR  级别的错误。

(3)__invoke() 
mixed  __invoke([ $... ] )
当尝试以调用函数的方式调用一个对象时,__invoke() 方法会被自动调用。
Note: 
本特性只在 PHP 5.3.0 及以上版本有效。 
(4)__set_state() 
static object __set_state  ( array $properties  )
自 PHP 5.1.0 起当调用 var_export()  导出类时,此静态 方法会被调用。 
本方法的唯一参数是一个数组,其中包含按 array('property' => value, ...) 格式排列的类属性。 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多