PHP 正則表示式函式
PHP 正則表示式簡介
正則表示式允許您在字串中搜索和替換模式。
安裝
PHP 正則表示式函式是 PHP 核心的一部分。無需安裝即可使用這些函式。
執行時配置
php.ini 中的這些設定可用於限制在評估正則表示式時使用的時間或資源量。
名稱 | 預設值 | 描述 | 可更改 |
---|---|---|---|
pcre.backtrack_limit | "1000000" | 在評估表示式時,正則表示式引擎允許進行的最大回溯次數。(PHP 5.2 起可用) | PHP_INI_ALL |
pcre.recursion_limit | "100000" | 在評估表示式時,正則表示式引擎允許達到的最大遞迴深度。(PHP 5.2 起可用) | PHP_INI_ALL |
pcre.jit | "1" | 如果設定為“1”,則啟用 PCRE(Perl 相容正則表示式)的即時編譯。(PHP 7.0 起可用) | PHP_INI_ALL |
PHP 正則表示式函式
函式 | 描述 |
---|---|
preg_filter() | 返回一個字串或陣列,其中包含替換後的模式匹配,但僅當找到匹配項時。 |
preg_grep() | 返回一個數組,其中僅包含輸入陣列中與模式匹配的元素。 |
preg_last_error() | 返回一個錯誤程式碼,指示最近一次正則表示式呼叫失敗的原因。 |
preg_match() | 在字串中查詢模式的第一個匹配項。 |
preg_match_all() | 查詢字串中模式的所有匹配項。 |
preg_replace() | 在給定字串中,返回一個字串,其中將給定模式(或模式陣列)的匹配項替換為子字串(或子字串陣列)。 |
preg_replace_callback() | 給定一個表示式和一個回撥函式,返回一個字串,其中表達式的所有匹配項都將被回撥函式返回的子字串替換。 |
preg_replace_callback_array() | 給定一個將表示式與回撥函式關聯的陣列,返回一個字串,其中每個表示式的匹配項都將被回撥函式返回的子字串替換。 |
preg_split() | 使用正則表示式的匹配項作為分隔符,將字串拆分成陣列。 |
preg_quote() | 透過在特殊字元前加上反斜槓來轉義在正則表示式中具有特殊含義的字元。 |
正則表示式修飾符
修飾符可以改變搜尋執行的方式。
修飾符 | 描述 |
---|---|
i | 執行不區分大小寫的搜尋。 |
m | 執行多行搜尋(搜尋字串開頭或結尾的模式將匹配每一行的開頭或結尾)。 |
u | 啟用 UTF-8 編碼模式的正確匹配。 |
正則表示式模式
方括號用於查詢一組字元
表示式 | 描述 |
---|---|
[abc] | 從方括號中的選項中查詢一個字元。 |
[^abc] | 查詢括號外的任何字元 |
[0-9] | 查詢 0 到 9 的數字範圍內的字元。 |
元字元
元字元是具有特殊含義的字元
元字元 | 描述 |
---|---|
| | 匹配由 | 分隔的任何一個模式,例如:cat|dog|fish |
. | 查詢任何字元的單個例項。 |
^ | 匹配字串的開頭,例如:^Hello |
$ | 匹配字串的結尾,例如:World$ |
\d | 查詢數字 |
\s | 查詢空白字元 |
\b | 匹配單詞的開頭,例如:\bWORD,或單詞的結尾,例如:WORD\b |
\uxxxx | 匹配十六進位制數字 xxxx 指定的 Unicode 字元 |
量詞
量詞定義數量
量詞 | 描述 |
---|---|
n+ | 匹配包含至少一個 n 的任何字串 |
n* | 匹配包含零個或多個 n 的任何字串 |
n? | 匹配包含零個或一個 n 的任何字串 |
n{x} | 匹配包含 X 個 n 的序列的任何字串 |
n{x,y} | 匹配包含 X 到 Y 個 n 的序列的任何字串 |
n{x,} | 匹配包含至少 X 個 n 的序列的任何字串 |
注意:如果您的表示式需要搜尋一個或多個特殊字元,您可以使用反斜槓 (\) 來轉義它們。例如,要搜尋一個或多個問號,可以使用以下表達式:$pattern = '/\?+/';