1.mb_split — 使用正則表達式分割多字節(jié)字符串
說明
array mb_split (string $pattern , string $string[,int $limit = -1])
使用正則表達式 pattern 分割多字節(jié) string 并返回結果 array 。
參數(shù)
pattern
正則表達式。
string
待分割的 string 。
limit
如果指定了可選參數(shù) limit,將最多分割為 limit 個元素。
返回值
array 的結果。
2.多字節(jié)
一般的ascii字符是用一個字節(jié)表示的,就是單字節(jié)。
特殊字符,非英語的字符(比如漢字等)需要用兩個字節(jié)表示,就是多字節(jié),也稱為寬字符。
unicode就是一種多字節(jié)編碼方式
今天看到smarty通過判斷mb_split函數(shù)是否存在從而判斷使用哪種編碼
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 - 當前區(qū)域星期幾的簡寫
%A - 當前區(qū)域星期幾的全稱
%b - 當前區(qū)域月份的簡寫
%B - 當前區(qū)域月份的全稱
%c - 當前區(qū)域首選的日期時間表達
%C - 世紀值(年份除以 100 后取整,范圍從 00 到 99)
%d - 月份中的第幾天,十進制數(shù)字(范圍從 01 到 31)
%D - 和 %m/%d/%y 一樣
%e - 月份中的第幾天,十進制數(shù)字,一位的數(shù)字前會加上一個空格(范圍從 ' 1' 到 '31')
%g - 和 %G 一樣,但是沒有世紀
%G - 4 位數(shù)的年份,符合 ISO 星期數(shù)(參見 %V)。和 %V 的格式和值一樣,只除了如 果 ISO 星期數(shù)屬于前一年或者后一年,則使用那一年。
%h - 和 %b 一樣
%H - 24 小時制的十進制小時數(shù)(范圍從 00 到 23)
%I - 12 小時制的十進制小時數(shù)(范圍從 00 到 12)
%j - 年份中的第幾天,十進制數(shù)(范圍從 001 到 366)
%m - 十進制月份(范圍從 01 到 12)
%M - 十進制分鐘數(shù)
%n - 換行符
%p - 根據(jù)給定的時間值為 `am' 或 `pm',或者當前區(qū)域設置中的相應字符串
%r - 用 a.m. 和 p.m. 符號的時間
%R - 24 小時符號的時間
%S - 十進制秒數(shù)
%t - 制表符
%T - 當前時間,和 %H:%M:%S 一樣
%u - 星期幾的十進制數(shù)表達 [1,7],1 表示星期一 Warning
盡管 ISO 9889:1999(當前的 C 標準)明確指出一周從星期一開始,
但是 Sun Solaris 的一周似乎從星期天開始并作為 1。
%U - 本年的第幾周,從第一周的第一個星期天作為第一天開始
%V - 本年第幾周的 ISO 8601:1988 格式,范圍從 01 到 53,
第 1 周是本年第一個至少還有 4 天的星期,星期一作為每周的第一天。
(用 %G 或者 %g 作為指定時間戳相應周數(shù)的年份組成。)
%W - 本年的第幾周數(shù),從第一周的第一個星期一作為第一天開始
%w - 星期中的第幾天,星期天為 0
%x - 當前區(qū)域首選的時間表示法,不包括時間
%X - 當前區(qū)域首選的時間表示法,不包括日期
%y - 沒有世紀數(shù)的十進制年份(范圍從 00 到 99)
%Y - 包括世紀數(shù)的十進制年份
%Z 或 %z - 時區(qū)名或縮寫
%% - 文字上的 `%' 字符
4.is_callable — 檢測參數(shù)是否為合法的可調(diào)用結構
說明
bool is_callable ( callable $name [,bool $syntax_only = false[,string &$callable_name]])
驗證變量的內(nèi)容能否作為函數(shù)調(diào)用。
這可以檢查包含有效函數(shù)名的變量,或者一個數(shù)組,包含了正確編碼的對象以及函數(shù)名。
參數(shù)
name
要檢查的回調(diào)函數(shù)。
syntax_only
如果設置為 TRUE ,這個函數(shù)僅僅驗證 name 可能是函數(shù)或方法。
它僅僅拒絕非字符,或者未包含能用于回調(diào)函數(shù)的有效結構。
有效的應該包含兩個元素,第一個是一個對象或者字符,第二個元素是個字符。
callable_name
接受“可調(diào)用的名稱”。下面的例子是“someClass::someMethod”。
注意,盡管 someClass::SomeMethod() 的含義是可調(diào)用的靜態(tài)方法,但例子的情況并不是這樣的。
返回值
如果 name 可調(diào)用則返回 TRUE ,否則返回 FALSE 。
5.當前腳本路徑
$_SERVER['SCRIPT_NAME'] /test/ser.php
__FILE__ C:\wamp\www\test\ser.php
6.trigger_error — 產(chǎn)生一個用戶級別的 error/warning/notice 信息
說明
bool trigger_error ( string $error_msg [,int $error_type = E_USER_NOTICE ] )
用于觸發(fā)一個用戶級別的錯誤條件,它能結合內(nèi)置的錯誤處理器所關聯(lián),
或者可以使用用戶定義的函數(shù)作為新的錯誤處理程序( set_error_handler() )。
該函數(shù)在你運行出現(xiàn)異常時,需要產(chǎn)生一個特定的響應時非常有用。
參數(shù)
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 起,如果在對象的方法中調(diào)用則 obj 為可選項。
8.mb_internal_encoding — 設置/獲取內(nèi)部字符編碼
說明
mixed mb_internal_encoding([string $encoding = mb_internal_encoding()])
設置/獲取內(nèi)部字符編碼
參數(shù)
encoding
encoding 字符編碼名稱使用于 HTTP 輸入字符編碼轉換、HTTP 輸出字符編碼轉換、mbstring 模塊系列函數(shù)字符編碼轉換的默認編碼。
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() 會被調(diào)用。
讀取不可訪問屬性的值時,__get() 會被調(diào)用。
當對不可訪問屬性調(diào)用 isset() 或 empty() 時,__isset() 會被調(diào)用。
當對不可訪問屬性調(diào)用 unset() 時,__unset() 會被調(diào)用。
參數(shù) $name 是指要操作的變量名稱。__set() 方法的 $value 參數(shù)指定了 $name 變量的值。
屬性重載只能在對象中進行。在靜態(tài)方法中,這些魔術方法將不會被調(diào)用。
所以這些方法都不能被聲明為 static。從 PHP 5.3.0 起, 將這些魔術方法定義為 static 會產(chǎn)生一個警告。
10.str_replace — 子字符串替換
說明
mixed str_replace (mixed $search, mixed $replace, mixed $subject[,int &$count])
該函數(shù)返回一個字符串或者數(shù)組。該字符串或數(shù)組是將 subject 中全部的 search 都被 replace 替換之后的結果。
如果沒有一些特殊的替換需求(比如正則表達式),你應該使用該函數(shù)替換 ereg_replace() 和 preg_replace() 。
參數(shù)
如果 search 和 replace 為數(shù)組,那么 str_replace() 將對 subject 做二者的映射替換。
如果 replace 的值的個數(shù)少于 search 的個數(shù),多余的替換將使用空字符串來進行。
如果 search 是一個數(shù)組而 replace 是一個字符串,那么 search 中每個元素的替換將始終使用這個字符串。該轉換不會改變大小寫。
如果 search 和 replace 都是數(shù)組,它們的值將會被依次處理。
search
查找的目標值,也就是 needle。一個數(shù)組可以指定多個目標。
replace
search 的替換值。一個數(shù)組可以被用來指定多重替換。
subject
執(zhí)行替換的數(shù)組或者字符串。也就是 haystack。
如果 subject 是一個數(shù)組,替換操作將遍歷整個 subject,返回值也將是一個數(shù)組。
count
如果被指定,它的值將被設置為替換發(fā)生的次數(shù)。
返回值
該函數(shù)返回替換后的數(shù)組或者字符串。
11.rtrim — 刪除字符串末端的空白字符(或者其他字符)
說明
string rtrim ( string $str [, string $charlist ] )
該函數(shù)刪除 str 末端的空白字符并返回。
不使用第二個參數(shù), 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 空字節(jié)符。
6. "\x0B" (ASCII 11 (0x0B)),垂直制表符。
參數(shù)
str
輸入字符串。
charlist
通過指定 charlist,可以指定想要刪除的字符列表。
簡單地列出你想要刪除的全部字符。使用 .. 格式,可以指定一個范圍。
返回值
返回改變后的字符串。
12.魔術方法
(1)__sleep() 和 __wakeup()
public array __sleep ( void )
void __wakeup ( void )
serialize()函數(shù)會檢查類中是否存在一個魔術方法 __sleep()。如果存在,該方法會先被調(diào)用,然后才執(zhí)行序列化操作。
此功能可以用于清理對象,并返回一個包含對象中所有應被序列化的變量名稱的數(shù)組。
如果該方法未返回任何內(nèi)容,則 NULL 被序列化,并產(chǎn)生一個 E_NOTICE 級別的錯誤。
Note:
__sleep() 不能返回父類的私有成員的名字。這樣做會產(chǎn)生一個 E_NOTICE 級別的錯誤??梢杂?Serializable 接口來替代。
__sleep() 方法常用于提交未提交的數(shù)據(jù),或類似的清理操作。同時,如果有一些很大的對象,但不需要全部保存,這個功能就很好用。
與之相反, unserialize() 會檢查是否存在一個 __wakeup() 方法。如果存在,則會先調(diào)用 __wakeup 方法,預先準備對象需要的資源。
__wakeup()
經(jīng)常用在反序列化操作中,例如重新建立數(shù)據(jù)庫連接,或執(zhí)行其它初始化操作。
(2)__toString()
public string __toString( void )
__toString()方法用于一個類被當成字符串時應怎樣回應。例如 echo $obj; 應該顯示些什么。
此方法必須返回一個字符串,否則將發(fā)出一條 E_RECOVERABLE_ERROR 級別的致命錯誤。
Warning
不能在 __toString()方法中拋出異常。這么做會導致致命錯誤。
需要指出的是在 PHP 5.2.0 之前,__toString() 方法只有在直接使用于 echo 或 print 時才能生效。
PHP 5.2.0 之后,則可以在任何字符串環(huán)境生效(例如通過 printf() ,使用 %s 修飾符),但不能用于非字符串環(huán)境(如使用 %d 修飾符)。
自 PHP 5.2.0 起,如果將一個未定義 __toString() 方法的對象轉換為字符串,會產(chǎn)生 E_RECOVERABLE_ERROR 級別的錯誤。
(3)__invoke()
mixed __invoke([ $... ] )
當嘗試以調(diào)用函數(shù)的方式調(diào)用一個對象時,__invoke() 方法會被自動調(diào)用。
Note:
本特性只在 PHP 5.3.0 及以上版本有效。
(4)__set_state()
static object __set_state ( array $properties )
自 PHP 5.1.0 起當調(diào)用 var_export() 導出類時,此靜態(tài) 方法會被調(diào)用。
本方法的唯一參數(shù)是一個數(shù)組,其中包含按 array('property' => value, ...) 格式排列的類屬性。