在此記錄一些常用庫函數和常用語法以便查閱
一、PHP手冊
php手冊中文地址 http://php.net/manual/zh
二、一些常用操作
2.1字符串操作
2.1.1 strpos — 查找字符串首次出現的位置
mixed strpos ( string $haystack
, mixed $needle
[, int $offset
= 0 ] )
返回 needle
在 haystack
中首次出現的數字位置。
haystack
在該字符串中進行查找。
needle
如果 needle
不是一個字符串,那麼它將被轉換為整型並被視為字符的順序值。
offset
如果提供了此參數,搜索會從字符串該字符數的起始位置開始統計。和 strrpos()、 strripos()不一樣,這個偏移量不能是負數。
2.1.2 substr — 返回字符串的子串
string substr ( string$string
, int $start
[, int $length
] )
返回字符串 string
由 start
和 length
參數指定的子字符串。
string
輸入字符串。
start
如果 start
是非負數,返回的字符串將從 string
的 start
位置開始,從 0 開始計算。例如,在字符串 “abcdef” 中,在位置 0 的字符是 “a”,位置 2 的字符串是 “c” 等等。
返回值:
如果 start
是負數,返回的字符串將從 string
結尾處向前數第 start
個字符開始。
如果 string
的長度小於或等於 start
,將返回 FALSE
。
2.1.3 str_split — 將字符串轉換為數組
array split ( string $pattern
, string $string
[, int $limit
] )
將一個字符串轉換為數組。
string
split_length
返回值:
如果指定了可選的 split_length
參數,返回數組中的每個元素均為一個長度為 split_length
的字符塊,否則每個字符塊為單個字符。
如果 split_length
小於 1,返回 FALSE
。如果 split_length
參數超過了 string
超過了字符串 string
的長度,整個字符串將作為數組僅有的一個元素返回。
2.1.4 explode — 使用一個字符串分割另一個字符串
array explode ( string $delimiter
, string $string
[, int $limit
] )
此函數返回由字符串組成的數組,每個元素都是 string
的一個子串,它們被字符串 delimiter
作為邊界點分割出來。
delimiter
邊界上的分隔字符。
string
輸入的字符串。
limit
如果設置了 limit
參數並且是正數,則返回的數組包含最多 limit
個元素,而最後那個元素將包含 string
的剩余部分。
如果 limit
參數是負數,則返回除了最後的 -limit
個元素外的所有元素。
如果 limit
是 0,則會被當做 1。
此函數返回由字符串組成的 array,每個元素都是 string
的一個子串,它們被字符串 delimiter
作為邊界點分割出來。
返回值:如果 delimiter
為空字符串(""),explode() 將返回 FALSE
。 如果 delimiter
所包含的值在 string
中找不到,並且使用了負數的 limit
, 那麼會返回空的 array, 否則返回包含 string
單個元素的數組。
2.1.5 preg_split — 通過一個正則表達式分隔字符串
array preg_split ( string $pattern
, string $subject
[, int $limit
= -1 [, int $flags
= 0 ]] )
通過一個正則表達式分隔給定字符串.
pattern
用於搜索的模式,字符串形式。
subject
輸入字符串
limit
如果指定,將限制分隔得到的子串最多只有limit
個,返回的最後一個 子串將包含所有剩余部分。limit
值為-1, 0或null時都代表"不限制", 作為php的標准,你可以使用null跳過對flags
的設置。
flags
flags
可以是任何下面標記的組合(以位或運算 | 組合):
PREG_SPLIT_NO_EMPTY
PREG_SPLIT_DELIM_CAPTURE
PREG_SPLIT_OFFSET_CAPTURE
subject
中的偏移量組成的數組。pattern
邊界分隔 subject
後得到 的子串組成的數組。
2.2 數組操作
2.2.1 array — 新建一個數組
array array ([ mixed $...
] )
創建一個數組。
語法“index => values”,用逗號分開,定義了索引和值。索引可以是字符串或數字。如果省略了索引,會自動產生從 0 開始的整數索引。如果索引是整數,則下一個產生的索引將是目前最大的整數索引 + 1。注意如果定義了兩個完全一樣的索引,則後面一個會覆蓋前一個。
返回值:返回根據參數建立的數組。參數可以用 => 運算符給出索引。
2.2.2 array_push — 將一個或多個單元壓入數組的末尾(入棧)
int array_push ( array &$array
, mixed $var
[, mixed $...
] )
array_push() 將 array
當成一個棧,並將傳入的變量壓入 array
的末尾。array
的長度將根據入棧變量的數目增加。
array
var
如果定義了路徑——不管是絕對路徑(在 Windows 下以盤符或者 \ 開頭,在 Unix/Linux 下以 / 開頭)還是當前目錄的相對路徑(以 . 或者 .. 開頭)——include_path 都會被完全忽略。例如一個文件以 ../ 開頭,則解析器會在當前目錄的父目錄下尋找該文件。
當一個文件被包含時,其中所包含的代碼繼承了 include 所在行的變量范圍。從該處開始,調用文件在該行處可用的任何變量在被調用的文件中也都可用。不過所有在包含文件中定義的函數和類都具有全局作用域。
2.3.2 require 語句包含並運行指定文件
require 和 include 幾乎完全一樣,除了處理失敗的方式不同之外。require 在出錯時產生 E_COMPILE_ERROR
級別的錯誤。換句話說將導致腳本中止而 include 只產生警告(E_WARNING
),腳本會繼續運行。
三、常用庫函數
3.1 時間
3.1.1 time — 返回當前的 Unix 時間戳
int time ( void )
返回自從 Unix 紀元(格林威治時間 1970 年 1 月 1 日 00:00:00)到當前時間的秒數。
3.1.2 date — 格式化一個本地時間/日期
string date ( string $format
[, int $timestamp
] )
返回將整數 timestamp
按照給定的格式字串而產生的字符串。如果沒有給出時間戳則使用本地當前時間。換句話說,timestamp
是可選的,默認值為 time()。
format
具體格式:http://php.net/manual/zh/function.date.php
3.1.3 date_default_timezone_get — 取得一個腳本中所有日期時間函數所使用的默認時區
string date_default_timezone_get ( void )
本函數返回默認時區
3.1.4 date_default_timezone_set — 設定用於一個腳本中所有日期時間函數的默認時區
bool date_default_timezone_set ( string $timezone_identifier
)
設定用於所有日期時間函數的默認時區。
timezone_identifier
時區標識符,例如 UTC 或 Asia/Shanghai(中國大陸選這個)。合法標識符列表見http://php.net/manual/zh/timezones.php
返回值:如果 timezone_identifier
參數無效則返回 FALSE
,否則返回 TRUE
。
3.2 JSON格式操作
3.2.1 json_encode — 對變量進行 JSON 編碼
string json_encode ( mixed $value
[, int $options
= 0 [, int $depth
= 512 ]] )
返回 value
值的 JSON 形式
value
待編碼的 value
,除了resource 類型之外,可以為任何數據類型。該函數只能接受 UTF-8 編碼的數據
options
二進制掩碼常量。具體見http://php.net/manual/zh/json.constants.php
depth
設置最大深度。 必須大於0。
返回值:成功則返回 JSON 編碼的 string 或者在失敗時返回 FALSE
。
$json
[, bool $assoc
= false [, int $depth
= 512 [, int $options
= 0]]] )
接受一個 JSON 格式的字符串並且把它轉換為 PHP 變量
json
json
string 格式的字符串。該函數只能接受 UTF-8 編碼的數據 assoc
TRUE
時,將返回 array 而非 object 。 depth
options
二進制掩碼常量。
只支持
JSON_BIGINT_AS_STRING
3.3文件操作
3.3.1 fopen — 打開文件或者 URL
resource fopen ( string $filename
, string $mode
[, bool $use_include_path
= false [, resource$context
]] )
fopen() 將 filename
指定的名字資源綁定到一個流上。
filename
如果 filename
是 "scheme://..." 的格式,則被當成一個 URL,PHP 將搜索協議處理器(也被稱為封裝協議)來處理此模式。如果該協議尚未注冊封裝協議,PHP 將發出一條消息來幫助檢查腳本中潛在的問題並將filename
當成一個普通的文件名繼續執行下去。
如果 PHP 認為 filename
指定的是一個本地文件,將嘗試在該文件上打開一個流。該文件必須是 PHP 可以訪問的,因此需要確認文件訪問權限允許該訪問。如果激活了安全模式或者 open_basedir 則會應用進一步的限制。
mode
mode
參數指定了所要求到該流的訪問類型。可以是以下:
mode
的可能值列表mode
FALSE
,並生成一條 E_WARNING
級別的錯誤信息。如果文件不存在則嘗試創建之。這和給 底層的open(2) 系統調用指定 O_EXCL|O_CREAT 標記是等價的。
'x+'
創建並以讀寫方式打開,其他的行為和 'x' 一樣。
use_include_path
如果也需要在 include_path 中搜尋文件的話,可以將可選的第三個參數 use_include_path
設為 '1' 或TRUE
。
context
上下文
返回值:
成功時返回文件指針資源,如果打開失敗,本函數返回 FALSE
。
錯誤提示:如果打開失敗,會產生一個 E_WARNING
錯誤。可以通過 @ 來屏蔽錯誤。
3.3.2 fgets — 從文件指針中讀取一行
string fgets ( resource $handle
[, int $length
] )
從文件指針中讀取一行。
handle
文件指針必須是有效的,必須指向由 fopen() 或 fsockopen() 成功打開的文件(並還未由 fclose() 關閉)。
length
從 handle
指向的文件中讀取一行並返回長度最多為 length
- 1 字節的字符串。碰到換行符(包括在返回值中)、EOF 或者已經讀取了 length - 1 字節後停止(看先碰到那一種情況)。如果沒有指定 length
,則默認為 1K,或者說 1024 字節。
返回值:
從指針 handle
指向的文件中讀取了 length
- 1 字節後返回字符串。 如果文件指針中沒有更多的數據了則返回FALSE
。
錯誤發生時返回 FALSE
。
3.3.3 fread — 讀取文件(可安全用於二進制文件)
string fread ( resource$handle
, int $length
) fread() 從文件指針 handle
讀取最多 length
個字節。 該函數在遇上以下幾種情況時停止讀取文件:
length
個字節 handle
文件系統指針,是典型地由 fopen() 創建的 resource(資源)。
length
最多讀取 length
個字節。
返回值:返回所讀取的字符串, 或者在失敗時返回 FALSE
。
3.3.4 fwrite — 寫入文件(可安全用於二進制文件)
int fwrite ( resource$handle
, string $string
[, int $length
] ) fwrite() 把 string
的內容寫入 文件指針 handle
處。
handle
文件系統指針,是典型地由 fopen() 創建的 resource(資源)。
string
將要寫入的字符串
ength
如果指定了 length
,當寫入了 length
個字節或者寫完了 string
以後,寫入就會停止,視乎先碰到哪種情況。
返回值:fwrite() 返回寫入的字符數,出現錯誤時則返回 FALSE
。
3.3.5 fclose — 關閉一個已打開的文件指針
bool fclose ( resource $handle
)
將 handle
指向的文件關閉。
handle
文件指針必須有效,並且是通過 fopen() 或 fsockopen() 成功打開的。
返回值:成功時返回 TRUE
, 或者在失敗時返回 FALSE
。
3.3.6 file_get_contents — 將整個文件讀入一個字符串 string file_get_contents ( string
$filename
[, bool $use_include_path
= false [, resource$context
[, int $offset
= -1 [, int $maxlen
]]]] )offset
所指定的位置開始讀取長度為maxlen
的內容。如果失敗,file_get_contents() 將返回 FALSE
。
該函數無需打開文件和關閉文件流!非常方便。
file_get_contents() 函數是用來將文件的內容讀入到一個字符串中的首選方法。如果操作系統支持還會使用內存映射技術來增強性能。
如果要打開有特殊字符的 URL (比如說有空格),就需要使用 urlencode() 進行 URL 編碼。
可選。規定文件句柄的環境。
context 是一套可以修改流的行為的選項。若使用 null,則忽略。
start 可選。規定在文件中開始讀取的位置。該參數是 PHP 5.1 新加的。 max_length 可選。規定讀取的字節數。該參數是 PHP 5.1 新加的。例子:
<?php echo file_get_contents("test.txt"); ?>
<?php
$homepage = file_get_contents('http://www.example.com/');
echo $homepage;
?>