PHP的擴充函數庫十分龐大,官方的非官方的,在這裡只記錄一些目前比較常用的擴充,對於這一部分,也只是記錄其中一些核心的函數,不是一個全面記錄。對於詳細的擴充函數說明,需要在使用中參考PHP的使用者手冊。
1 目錄操作
dir() 返回一個目錄對象
read() 遍曆目錄對象中的條目
<?php$d=dir("./");while($item=$d->read()){ echo $item; echo "\n";}$d->rewind();$d->close();?>
2 檔案系統操作
dirname() 返迴路徑中的目錄名部分
basename() 返迴路徑中檔案名稱部分
chown chgrp chmod 與同名的linux系統調用類似
mkdir mkdir copy rename delete unlink tmpname touch tmpfile umask與同名的linux系統調用類似
disk_free_space() disk_total_space()
fopen fread fwrite feof fflush fclose fseek ftell rewind等與同名C標準庫函數功能類似
file_exists() 檢查檔案與目錄是否存在
file() 將整個檔案讀入數組,每個下標對應檔案的一行
file_get_contents() 將整個檔案讀入到一個字串,支援從檔案的特定位置開始讀取若干字元
file_put_contents($file,$data) 將字串資料寫入到指定檔案
readfile() readlink 將file或link內容直接輸出
fileatime filemtime filectime 取得檔案的上次訪問/修改/inode修改時間
fileowner filegroup 返迴文件所有者及組的號
filesize filetype fileperms 取得檔案的大小、類型、許可權
fputcsv fgetcsv 從檔案中讀取csv格式的資料或將csv格式資料寫入檔案
fstat ftruncate 擷取指標對應檔案的stat資訊/截斷到給定的長度
stat 根據檔案名稱擷取檔案的stat資訊
is_dir is_file is_link is_executable is_readable is_writeable is_uploaded_file 判斷檔案的屬性
move_uploaded_file
parse_ini_file parse_ini_string 解析ini檔案及字串,返回一個關聯資料,可以通過名稱訪問相關配置項
pathinfo 返回關聯陣列,包含了dirname,basename,extname ,filename
popen pclose 開啟/關閉指向進程的管道檔案
realpath() 返回絕對路徑
3 進程式控制制
3.1 POSIX擴充
posix_access($file,$mode) 查看檔案的存取權限,可以由is_readable等幾個函數代替
posix_errno() 返回posix函數執行的上個錯誤
posix_getcwd() 返回目前的目錄,與getcwd()相同
posix_getgid() geteuid() getgid() getegied() getgroup() getpgid() getpgrp() getpid() getsid等與同名linux系統調用類似
posix_getlogin() 擷取登入名稱稱
posix_getpwnam() 擷取使用者的詳情
posix_getrlimit() 擷取資源限制
posix_kill() posix_times()
3.2 程式執行函數
string exec($cmd, array &$output, int &$return_var) 執行外部程式,並返回輸出的最後一行
string shell_exec($cmd) 與`cmd` 功能一樣,將返回程式的所有輸出
string system() 執行命令,並顯示輸出,傳回值為輸出的最後一行
escapeshellarg() 逸出字元串以作為shell參數
escapeshellcmd() 逸出字元以作為shell命令
proc_open() 執行程式,並開啟一個管道用於讀寫相應的輸入和輸出
proc_nice() 調整程式的優先順序
proc_close() 關閉開啟的程式
proc_terminate() 終止開啟的程式
3.3 訊號量、IPC與共用記憶體
resource sem_get(int $key, [int $max_acquire=1[,int $perm=0666[,int $auto_release=1]]]) 返回一個SYSTEM V的訊號量,首次調用時會建立,隨後的各次調用會返回不同的標識符,但均訪問同一個訊號量。
bool sem_remove(resource $handler) 從系統中移除指定的訊號量,之後將不可再訪問
bool sem_acquire($handler) 在獲得訊號量之前一直阻塞
bool sem_release($handler) 釋放之前獲得的訊號量
resource msg_get_queue(int $key[,int $perms = 0666]) 按key返回一個SYSTEM V的訊息佇列。首次調用時會建立,隨後的各次調用會返回不同的標識符,但均訪問同一個訊息佇列。
boo msg_remove_queue($handler) 移除系統的訊息佇列,之後進程將不可再訪問
bool msg_send($queue, int $msg_type,$msg[,bool $serialize=true[. bool $blocking=true [, int &$errcode]]] ) 向訊息存入一個訊息
msg_recvive($queue, int $expect_type, &$msgtype, $maxsize, &$msg [, bool $unserialize=true [, $flag = 0 [,&$errcode ]]] ) 從訊息佇列取出一個訊息
array msg_stat_queue($handler) 查看訊息佇列上的相關屬性
bool msg_set_queue() 設定訊息上的相關屬性
resource shm_attach($key,$perms) 按key返回一個SYSTEM V的共用記憶體。首次調用時會建立,隨後的各次調用會返回不同的標識符,但均訪問同一個訊息佇列。
bool shm_remove($handler) 從系統中移除共用記憶體對象
bool shm_detach($handler) 與共用記憶體對象斷開,但系統中仍存在相關對象
bool shm_put_var($hanlder ,$key, $val) 向共用記憶體設定資料
mixed shm_get_var($handler ,$key) 從共用記憶體取資料
bool shm_remove_var($handler, $key) 從共用記憶體移除資料
4 網路擴充
4.1 URL擴充
string base64_decode($str) 返回原串
string base64_encode($str) 返回編碼串
array get_headers($url,$b_hash) 返回指定URL伺服器的回應標頭,若$b_hash為真,則返回關聯陣列
string http_build_query(array $data) 將hash數組資料編碼為http之後的請求字串
string rawurlencode($str) 根據RFC1738對URL進行編碼
string rawurldecode($str) 對URL進行解碼
<?php$data = array('foo'=>'bar', 'baz'=>'boom', 'cow'=>'milk', 'php'=>'hypertext processor'); echo http_build_query($data); // foo=bar&baz=boom&cow=milk&php=hypertext+processor$url = 'http://username:password@hostname/path?arg=value#anchor';print_r(get_headers($url));/*Array( [scheme] => http [host] => hostname [user] => username [pass] => password [path] => /path [query] => arg=value [fragment] => anchor)*/
4.2 socket擴充
resource socket_create($domain,$type,$protocol) 返回一個通訊端描述符
socket_bind($sock,$ip,$port) 設定綁定
socket_listen($socket,$backlog) 監聽連接埠
resource socket_accept($sock)
resource socket_connect($sock,$ip,$port) 串連遠程地址與連接埠
string socket_read($sock,$length) 從通訊端上讀取資料
int socket_write($sock,$str,$len) 從通訊端上寫資料
int socket_recv/send($sock,$&buf,$len,$flag) 從通訊端上接收與發送資料
socket_recvfrom/sendto($sock,$&buf,$len,$flag,$&ip,$&port)
socket_get/set_option($sock,$level,$optname,[$optname]) 設定通訊端選項
socket_set_nonblock($sock) 設定為非阻塞
socket_getpeer/sockname($sock,$&ip,$&port)
socket_strerror($errno)
socket_clear_error($sock)
4.3 網路工具
array dns_get_record($hostname,$type,$&auth_ns,$&additional ) 擷取對應類型的主機名稱的DNS記錄,可返回認證NS及附加資訊
bool dns_check_record($name,$type)/checkdnsrr type有MX,A,ANY,AAAA,ALL,若找到對應記錄則返回T,否則為F
dns_get_mx /getmxrr($host,array$& mxlist) 擷取對應主機的MX記錄
resource fsockopen($ip,$port) 返回一個網路連接,相當於運行了socket_create和socket_connect
string gethostbyaddr($ip) gethostbyname1($host) 返回對應的網域名稱或地址,若使用帶1的函數,則返回一個地址數組
getprotobyname/number()
getservbyname()/getservbyport()
string inet_ntop($in_addr)
string inet_pton($ip)
long2ip()/ip2long()
setsookie/setrawcookie($name,$val,$expier,$domain,)
socket_get_status()
socket_set_timeout()