PHP擴充套件簡介

2020-08-11 15:58:43

PHP擴充套件簡介


PHP目前提供了150多個擴充套件,PHP在安裝之初也會預設安裝很多擴充套件,下面 下麪是對對PHP擴充套件的一些整理和簡介。

擴充套件 介紹
bcmath 對於任意精度的數學,PHP提供了支援用字串表示的任意大小和精度的數位的二進制計算,最多爲2147483647-1(或0x7FFFFFFF-1)。
bz bzip2 函數用於透明地讀寫 bzip2(.bz2)壓縮檔案。
calendar 曆法擴充套件集包括了一系列用於在不同曆法間進行轉換的函數,它是以Julian Day計數爲中介或標準來進行的。Julian Day計數是以公元前的4713年的1月1日爲起點的一種計數法。爲了在不同曆法間進行轉換,你首先要轉換成Julian Day計數,然後再轉換爲你所需要的歷法。Julian Day計數和Julian曆法是非常不同的!Julian Day計數的更多資訊可以參考» http://www.hermetic.ch/cal_stud/jdn.htm,曆法系統的更多資訊可以參考» http://www.fourmilab.ch/documents/calendar
ctype 該擴充套件所提供的函數用來檢測 在當前的區域設定下(參見 setlocale()),一個字元或者字串 是否僅包含指定型別的字元。
當使用整數作爲參數呼叫這些函數的時候, 這些函數的行爲和 C 語言(ctype.h) 中的對應函數一樣。 也就是說,如果傳入了小於 256 的整數參數,它會把這個整數當做 ASCII 碼值, 來檢測對應字元是否符合要求(數值檢測的 ASCII 值範圍爲 0x30-0x39)。 如果傳入的參數介於 -128 和 -1 之間(含 -128 和 -1),它會先將其加上 256,然後再進行檢測。
當傳入參數爲字串的時候,它會對字串中的每個字元進行檢測, 僅當字串中的每個字元都符合指定條件的情況下纔會返回 TRUE。 在 PHP 5.1 之前的版本中,如果傳入空字串總是會返回 TRUE, 從 PHP 5.1 開始,傳入空字串總是會返回 FALSE。
傳入除整數和字串之外的參數 會立即返回 FALSE。
需要提醒的是,如果可以滿足需求,請優先考慮使用 ctype 函數, 而不是正則表達式或者對應的 「str_" 和 "is_」 函數。 因爲 ctype 使用的是原生 C 庫,所以會有明顯的效能優勢。
curl PHP 支援 Daniel Stenberg 建立的 libcurl 庫,能夠連線通訊各種伺服器、使用各種協定。libcurl 目前支援的協定有 http、https、ftp、gopher、telnet、dict、file、ldap。 libcurl 同時支援 HTTPS 證書、HTTP POST、HTTP PUT、 FTP 上傳(也能通過 PHP 的 FTP 擴充套件完成)、HTTP 基於表單的上傳、代理、cookies、使用者名稱+密碼的認證。
date 你可以使用這些函數獲取執行 PHP 的伺服器的日期和時間, 也可以使用這些函數把日期和時間 格式化成不同格式的字串。
日期和時間資訊在 PHP 內部是以 64 位數位儲存的, 它可以覆蓋當前時間前後 2920 億年的時間,這個範圍之廣,足以滿足現有應用的實際需求。
Note: 需要注意的是, 這些函數都是依賴伺服器的區域設定的, 所以在使用它們的時候,要考慮夏令時 (例如:使用 $date = strtotime(’+7 days’, $date) 而不是 $date += 72460*60) 和閏年的情況。
exif 通過使用 exif 擴充套件,你可以操作影象元數據。 例如:你可以使用 exif 相關的函數從數碼相機拍攝的圖片檔案中讀取元數據。 通常 JPEG 和 TIFF 格式的影象檔案都包含元數據。
fileinfo 本模組中的函數通過在檔案的給定位置查詢特定的 魔術 位元組序列 來猜測檔案的內容型別以及編碼。 雖然不是百分百的精確, 但是通常情況下能夠很好的工作。
filter 此擴充套件通過驗證或消毒數據來過濾數據。當數據源包含未知(或外部)數據(如使用者提供的輸入)時,這特別有用。例如,該數據可能來自HTML表單。
過濾有兩種主要型別:驗證和消毒。
驗證用於驗證或檢查數據是否滿足某些條件。例如,傳入FILTER_VALIDATE_EMAIL將確定該數據是否是有效的電子郵件地址,但不會更改數據本身。
無害化處理會對數據進行無害化處理,因此它可以通過刪除不需要的字元來修改數據。例如,傳FILTER_SANITIZE_EMAIL將刪除不適合電子郵件地址包含的字元。也就是說,它不驗證數據。
標記可與驗證和清理一起選擇使用,以根據需要調整行爲。例如,在過濾URL時傳入FILTER_FLAG_PATH_REQUIRED將需要一個路徑(比如http://example.org/foo)中的出現。
ftp 本擴充套件中的函數實現了通過 FTP 協定存取檔案伺服器的用戶端。 FTP 協定在 » http://www.faqs.org/rfcs/rfc959 中定義。 本擴充套件提供了對於 FTP 伺服器完整的存取及控制功能。 如果只是簡單的從 FTP 伺服器讀取或向伺服器寫入一個檔案, 請考慮使用 ftp:// 包裝器檔案系統函數, 會更加的簡單。
gettext gettext函數實現了NLS (Native Language Support) API,他可以用來國際化您的PHP程式. 請參閱gettext的文件,爲您的系統進行國際化功能的詳盡的解釋 或檢視文件 » http://www.gnu.org/software/gettext/manual/gettext.html.
GD PHP 並不僅限於建立 HTML 輸出, 它也可以建立和處理包括 GIF, PNG, JPEG, WBMP 以及 XPM 在內的多種格式的影象。 更加方便的是,PHP 可以直接將影象數據流輸出到瀏覽器。 要想在 PHP 中使用影象處理功能,你需要連帶 GD 庫一起來編譯 PHP。 GD 庫和 PHP 可能需要其他的庫, 這取決於你要處理的影象格式。
你可以使用 PHP 中的影象函數來獲取下列格式影象的大小: JPEG, GIF, PNG, SWF, TIFF 和 JPEG2000。
如果聯合 exif 擴充套件 一起使用, 你可以操作儲存在 JPEG 和 TIFF 影象檔案頭部的資訊, 這樣就就可以獲取數碼相機所產生的元數據。 exif 相關的函數不需要 GD 庫亦可使用。
hash 資訊摘要(雜湊)引擎。允許使用各種雜湊演算法直接或增量處理任意長度的資訊。
iconv 此模組包含了 iconv 字元集轉換功能的介面。 使用此模組,你可以將一個本地字元集表達的字串轉換成另一種字元集,比如可以是 Unicode 字元集。 支援的字元集基於你係統上 iconv 的實現。 注意,在某些系統上 iconv 函數可能無法以你預期的那樣工作。 在這種情況下,安裝 » GNU libiconv 庫將會是個不錯的主意。 它最終將會產生更一致的結果。
自 PHP 5.0.0 起,配備了這個具有多種實用功能的擴充套件,來幫助您編寫多語言指令碼。
Imagick Imagick 是用 ImageMagic API 來建立和修改影象的PHP官方擴充套件。
ImageMagick® 是用來建立,編輯,合併點陣圖影象的一套元件。 它能夠用於讀取,轉換,寫入多種不同格式的影象。 包含 DPX, EXR, GIF, JPEG, JPEG-2000, PDF, PhotoCD, PNG, Postscript, SVG, 和 TIFF。
imap 這些函數提供了可以操作 IMAP 以及 NNTP,POP3 和本地郵箱的方法。
注意,有些 IMAP 函數在 POP3 協定下將不能正常的工作。
json 本擴充套件實現了 » JavaScript物件符號(JSON) 數據轉換格式。 PHP 5 中的解碼分析器基於 Douglas Crockford 的 JSON_checker。 PHP 7 中是改進的全新解析器,專門爲 PHP 訂製,軟體許可證爲 PHP license。
ldap LDAP是輕型目錄存取協定,並且是用於存取「目錄伺服器」的協定。目錄是一種特殊的數據庫,它以樹狀結構儲存資訊。
該概念與您的硬碟目錄結構相似,除了在這種情況下,根目錄是「世界」,而第一級子目錄是「國家」。目錄結構的較低級別包含公司,組織或場所的條目,而目錄結構的較低層次則包含人員,裝置或文件的目錄條目。
要參照硬碟上子目錄中的檔案,您可以使用以下方法:
/usr/local/myapp/docs
正斜槓標記參考中的每個分割區,並且從左到右讀取序列。
等同於LDAP中的標準檔案參照是「專有名稱」,簡稱爲「 dn」。dn的範例可能是:
n=John Smith,ou=Accounts,o=My Company,c=US
逗號標記參考中的每個分割區,並且從右到左讀取順序。您將這個dn讀爲:
country = US
organization = My Company
organizationalUnit = Accounts
commonName = John Smith
就像沒有關於如何組織硬碟的目錄結構的硬性規則一樣,目錄伺服器管理器可以建立任何有意義的結構。但是,有一些約定。訊息是,除非您對目錄伺服器的結構有所瞭解,否則您將無法編寫程式碼來存取目錄伺服器,這超出了在不瞭解可用內容的情況下可以使用數據庫的範圍。
libxml 這些函數/常數可用的PHP 5.1.0,和以下核心擴充套件依賴於此libxml擴充套件:DOM, libxml, SimpleXML, SOAP, WDDX, XSL, XML, XMLReader, XMLRPCXMLWriter.
mbstring 雖然許多語言每個必要字元都能一對一對映到 8 位元(bit)的值,但也有好幾種語言需要非常多的字元來書面通訊,以至於它們的編碼範圍不能僅僅包含在一個位元組裡(一個位元組 Byte 由 8 位元 bit 構成。每一位元僅能包含兩種不同的值: 1 或 0。所以,一位元組僅能夠表示 256 種不同的值,即 2 的八次方)。 開發多位元組字元編碼方案是爲了在基於位元組的常規編碼系統中表達超過 256 個字元。
在你操作(trim、split、splice 等等)多位元組編碼的字串的時候,由於在這種編碼方案下,兩個或多個連續位元組可能只表達了一個字元,所以你需要使用專門的函數。 否則,當你將不能檢測多位元組字串的函數應用到這個字串的時候,它可能無法檢測多位元組字元的起始位置,並以亂碼字串結尾,基本丟失了它原來的意思。
mbstring 提供了針對多位元組字串的函數,能夠幫你處理 PHP 中的多位元組編碼。 除此以外,mbstring 還能在可能的字元編碼之間相互進行編碼轉換。 爲了方便起見,mbstring 設計成了處理基於 Unicode 的編碼,類似 UTF-8、UCS-2 及諸多單位元組的編碼
mcrypt mcrypt 是php裏面重要的加密支援擴充套件庫,linux環境下該庫在預設情況下不開啓。window環境下,PHP>=5.3,預設開啓mcrypt擴充套件。
PHP程式設計師們在編寫程式碼程式時,除了要保證程式碼的高效能之外,還有一點是非常重要的,那就是程式的安全性保障。PHP除了自帶的幾種加密函數外,還有功能更全面的PHP加密擴充套件庫Mcrypt和Mhash。
其中,Mcrypt擴充套件庫可以實現加密解密功能,就是既能將明文加密,也可以密文還原。更多瞭解>>
mssql 這些函數允許您存取MS SQL Server數據庫。
此擴充套件在PHP 5.3或更高版本的Windows上不再可用。
該特性在PHP 7.0.0中被刪除。
openssl 本擴充套件使用 » OpenSSL 庫來對稱/非對稱加解密,以及 PBKDF2、 PKCS7、 PKCS12、 X509 和其他加密操作。除此之外還提供了 TLS 流的實現。
OpenSSL 還提供了更多本模組暫不支援的功能,某些功能以後可能會增加。
pcntl PHP的進程控制支援實現了Unix方式的進程建立, 程式執行, 信號處理以及進程的中斷。 進程控制不能被應用在Web伺服器環境,當其被用於Web服務環境時可能會帶來意外的結果。
這份文件用於闡述每個進程控制函數的通常用法。關於Unix進程控制的更多資訊建議您查閱 系統文件中關於fork(2),waitpid(2),signal(2)等的部分或更全面的參考資料比如 《Unix環境高階程式設計》(作者:W. Richard Stevens,Addison-Wesley出版)。
PCNTL現在使用了ticks作爲信號處理的回撥機制 機製,ticks在速度上遠遠超過了之前的處理機制 機製。 這個變化與「使用者ticks」遵循了相同的語意。您可以使用declare() 語句在程式中指定允許發生回撥的位置。這使得我們對非同步事件處理的開銷最小化。在編譯PHP時 啓用pcntl將始終承擔這種開銷,不論您的指令碼中是否真正使用了pcntl。
有一個調整是PHP 4.3.0之前的所有pcntl指令碼要使其工作,要麼在期望允許回撥的(程式碼)部分使用 declare() ,要麼使用declare()新的全域性語法 使其在整個指令碼範圍有效。
注意: 此擴充套件在 Windows 平臺上不可用。
pcre 這些函數中使用的模式語法非常類似 perl。表達式必須用分隔符閉合,比如一個正斜槓(/)。 分隔符可以使任意非字母數位,除反斜槓()和空位元組之外的非空白 ascii 字元。 如果分隔符 在表達式中使用,需要使用反斜線進行跳脫。自php 4.0.4開始,可以使用 perl 樣式的()、 {}、 [] 以及 <> 作爲分隔符。 更詳細的解釋參見模式語法
結束分隔符後面可以緊跟模式修飾符來影響匹配效果。 參見模式修飾符
PHP也支援使用 POSIX 擴充套件正則表達式函數 的 POSIX 擴充套件語法的正則表達式。
注意:這個擴充套件維護了一個已編譯正則表達式的全域性執行緒化快取(最大4096)。
Warning 你應該知道一些 PCRE 的限制。閱讀» http://www.pcre.org/pcre.txt 獲取更詳細資訊。
PCRE 庫是一個實現了與 perl 5 在語法和語意上略有差異(詳見下文)的正則表達式模式匹配功能的函數集。 當前的實現對應於 perl 5.005。
phar phar擴充套件提供了一種方法,可以將整個PHP應用程式放入名爲「phar」(PHP歸檔)的單個檔案中,以方便分發和安裝。除了提供這個服務之外,phar擴充套件還提供了通過PharData類建立和操作tar和zip檔案的檔案格式抽象方法,就像PDO提供了存取不同數據庫的統一介面一樣。PDO不能在不同的數據庫之間進行轉換,而Phar也可以使用一行程式碼在tar、zip和Phar檔案格式之間進行轉換。有關範例,請參閱Phar::convertToExecutable()
phar是什麼?Phar歸檔的最佳特點是可以方便地將多個檔案分組爲單個檔案。因此,phar歸檔提供了一種方法,可以將完整的PHP應用程式分發到單個檔案中,並從該檔案執行它,而不需要將其解壓縮到磁碟。此外,phar歸檔檔案可以由PHP像其他任何檔案一樣輕鬆地執行,無論是在命令列上還是在web伺服器上。Phar有點像PHP應用程式的u盤。
readline readline 擴充套件函數實現了存取 GNU Readline 庫的介面. 這些函數提供了可編輯的命令列. 一個例子是在 Bash 中允許你使用箭頭按鍵來插入字元或者翻看歷史命令. 因爲這個庫的互動特性,這個功能在你寫的 Web 程式中沒多大用處, 但是當你寫的指令碼被用在命令列中時非常有用.
從PHP 7.1.0 開始,這個擴充套件在Windows上也可用。
注意 readline擴充套件並非執行緒安全的!因此,在任何真執行緒安全的SAPI(例如Apache的mod_winnt)中使用這個擴充套件是非常不推薦的!
Reflection PHP 5 具有完整的反射 API,新增了對類、介面、函數、方法和擴充套件進行反向工程的能力。 此外,反射 API 提供了方法來取出函數、類和方法中的文件註釋。
請注意部分內部 API 丟失了反射擴充套件工作所需的程式碼。 例如,一個內建的 PHP 類可能丟失了反射屬性的數據。這些少數的情況被認爲是錯誤,不過, 正因爲如此,它們應該被發現和修復。
session 對談支援在 PHP 中是在併發存取時由一個方法來儲存某些數據.從而使你能夠構建更多的定製程式 從而提高你的 web 網站的吸引力.
一個存取者存取你的 web 網站將被分配一個唯一的 id, 就是所謂的對談 id. 這個 id 可以儲存在使用者端的一個 cookie 中,也可以通過 URL 進行傳遞.
對談支援允許你將請求中的數據儲存在超全域性陣列$_SESSION中. 當一個存取者存取你的網站,PHP 將自動檢查(如果 session.auto_start 被設定爲 1)或者在你要求下檢查(明確通過 session_start() 或者隱式通過 session_register()) 當前對談 id 是否是先前發送的請求建立. 如果是這種情況, 那麼先前儲存的環境將被重建.
sockets Socket擴充套件是基於流行的BSD sockets,實現了和socket通訊功能的底層介面,它可以和用戶端一樣當做一個socket伺服器。
想瞭解更通用的用戶端socket介面,請看 stream_socket_client(), stream_socket_server(), fsockopen(), 和 pfsockopen()
使用這些函數時請注意,雖然他們中有很多和C函數同名的,但宣告卻很可能不同。未避免混淆,請仔細閱讀函數描述。
不熟悉socket程式設計的可以在Unix手冊上找到很多有用的資訊,網上也有很多C socket程式設計方面的教學,簡單修改一下就可以應用於PHP socket程式設計。» Unix Socket FAQ是一個不錯的入門。
SPL PHP標準庫,SPL是用於解決典型問題(standard problems)的一組介面與類的集合。
tokenizer 記號賦予器函數爲嵌入在Zend引擎中的PHP記號賦予器提供了一個介面。使用這些函數,您可以編寫自己的PHP原始碼分析或修改工具,而不必在詞彙級處理語言規範。
zlib 這個模組允許您透明地讀寫gzip (.gz)壓縮檔案,通過大多數檔案系統函數的版本,這些函數可以使用gzip壓縮的檔案(也可以使用未壓縮的檔案,但不使用通訊端)。
注意:Version 4.0.4爲.gz檔案引入了一個fopen包裝器,因此如果在呼叫fopen()時在檔名或路徑前面加上zlib:字首,就可以使用一個特殊的zlib: URL透明地存取壓縮檔案,使用普通的f*()檔案存取函數。該特性需要一個提供fopencookie()函數的C執行時庫。到目前爲止,GNU libc似乎是唯一提供該特性的庫。在PHP 4.3.0中,zlib:被更改爲compress。zlib://防止檔名中含有’:'字元的歧義。不再需要fopencookie()函數。更多資訊可以在關於zlib://的部分中找到。