首頁 後端開發 php教程 常用的php正規表示及文法註解總結

常用的php正規表示及文法註解總結

May 29, 2020 pm 01:07 PM
php 正規表示式

基本語法

界定符:

標識一個正規表示式的開始和結束,用'/'或'#'或'{ }',因為語法'{ }'也可能是正規表示式的運算符,為了避免混淆,所以不建議使用。建議的用法如下:

Copy$pattern = '/[0-9]/';  //我喜欢这个,看起来比较简洁 $pattern = '#[0-9]#';
登入後複製

原子:

#可見原子:Unicode編碼表中可用鍵盤輸出後肉眼可見的字符,例如:標點; . / ? 或英文字母,漢字等等可見字符
不可見原子:Unicode編碼表中可用鍵盤輸出後肉眼不可見的字符,例如:換行符\n,Tab製表符\t, 空格等等,
一般只用這三個(換行符一般和其他字元一起匹配,因為只有換行符是匹配不到的)
小提示:匹配運算符前面需要加'\' 例如:' ' 號,匹配的話需要寫出'\ '

元字元

原子的篩選方式:

| 匹配兩個或多個分支選擇
[] 匹配方括號中的任一個原子
[^] 匹配除方括號中的原子之外的任意字元;
範例:Duang|duang 或[Dd ]uang 都可以匹配到Duang和duang
區間寫法:[a-z]匹配a到z的字元, [0-9]匹配0到9的字元。也可以[a-z0-9]
. 匹配除換行符之外的任意字元
\d 匹配任一個十進制數字,即{0-9]
\D 匹配任一個非十進制數字[^0-9] 相當於[^\d]
\s 符合一個不可見的原子,即[\f\n\r\t\v]
\S 符合一個可見的原子,即[\f\n\r\t\v],相當於[\s]z
\w 符合任一個數字、字母或底線,即[0-9a-zA-Z_]
\W 匹配任一非數字、字母或底線,[0-9a-zA-Z_],相當於[\w]

量詞

{n} 表示前面的原子剛好出現了n次。
[n] 表示其前面的原子最少出現n次
{n,m} 最少出現n次,最多出現m次
* 匹配0次、一次或多次,即{0,}
符合一次或多次,即{1,}
? 符合0或1次,即{0,1}

##邊界控制

^ 匹配字串開始的位置

$ 匹配字串結尾的位置
例:^John 可以匹配到:John 但是匹配不到:123John,因為規定了字串以John開頭

模式單元

() 符合其中的整體為一個原子, 如: (X|x)iaomi , 可以配對到xiaomi

#修正模式

貪婪比對

存在歧義時取其長(預設)





#懶惰符合

符合結果存在歧義時取其短,只需在正規表示式的後面'/'加上'U',例如'/[0-9]/U';範例:

Copy$subject = "test__123123123";
preg_match('/test.+123/', $subject, $matches); //贪婪模式  var_dump($matches);
preg_match('/test.+123/U', $subject, $matches); //懒惰模式var_dump($matches);
登入後複製

常見的修正模式:

U 懶惰符合

i 忽略英文字母的大小寫

x 忽略正規表示式的空白符

s 讓元字元'.' 匹配包括換行符在內的所有字元



#常用函數

preg_match

##執行匹配正規表示式

preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $offset = 0 ]]] ) : int
登入後複製

pattern: 要搜尋的模式,字串型別。 subject:輸入字串。 match: 如果提供了參數matches,它將被填入搜尋結果,資料結構為一維數組。 flags: 可以設定為PREG_OFFSET_CAPTURE,使用搜尋結果的第0個元素為匹配的字串,第1個元素為對應的偏移量(位置)offset: 搜尋從目標字串的起始位置開始匹配。


傳回值:符合次數
類似函數preg_match_all,參數與preg_match一致

區別:

preg_match:只匹配一次,搜尋結構match的資料結果為一維數組preg_match_all :符合全部,搜尋結果match的資料結構為二維數組。

preg_replace######執行一個正規表示式搜尋和替換,傳回值為替換後的字串###
preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] ) : mixed
登入後複製
###pattern:要搜尋的模式。可以是一個字串或字串數組。 replacement:用於替換的字串或字串陣列subject:要進行搜尋和替換的字串或字串陣列。 limit:替換的最大次數。預設是 -1(無限)。 count:替換次數。 ###類似函數preg_filter,參數與preg_replace一致###區別(使用數組進行匹配的時候才看得出區別):preg_replace:不管是否有替換,返回全部結果preg_filter:只返回匹配的結果。 ######preg_split######透過一個正規表示式分隔字串###
preg_split ( string $pattern , string $subject [, int $limit = -1 [, int $flags = 0 ]] ) : array
登入後複製

$pattrn:用于搜索的模式,字符串形式。subject:输入字符串limit:将限制分隔得到的子串最多只有limit个,返回的最后一个 子串将包含所有剩余部分。flags:有以下标记的组合:
-- 1. PREG_SPLIT_NO_EMPTY: 返回分隔后的非空部分。
-- 2. PREG_SPLIT_DELIM_CAPTURE: 用分隔符'()'括号把匹配的捕获并返回。
-- 3. PREG_SPLIT_OFFSET_CAPTURE: 匹配返回时将会附加字符串偏移量

PREG_SPLIT_DELIM_CAPTURE这个参数可能比较难明白,举个例子看看:

Copy$subject = "1a23b";  
$a = preg_split('/[\d]/', $subject, -1, PREG_SPLIT_NO_EMPTY);  
var_dump($a);  
$a = preg_split('/([\d])/', $subject, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); 
var_dump($a);
登入後複製

输出如下:

array (size=2)
0 => string 'a' (length=1)
1 => string 'b' (length=1)
array (size=5)
0 => string '1' (length=1)
1 => string 'a' (length=1)
2 => string '2' (length=1)
3 => string '3' (length=1)
4 => string 'b' (length=1)

preg_grep

返回匹配模式的数组条目

preg_grep ( string $pattern , array $input [, int $flags = 0 ] ) : array
登入後複製

$pattern:要搜索的模式,字符串形式$input:输入数组flags:如果不设置则返回匹配的数目,设置PREG_GREP_INVERT则返回不匹配的数目。

preg_quote

转义正则表达式字符,返回为转义后的字符串

preg_quote ( string $str [, string $delimiter = NULL ] ) : string

str:输入字符串delimiter:需要转义的字符串

以上是常用的php正規表示及文法註解總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

解釋PHP中晚期靜態結合的概念。 解釋PHP中晚期靜態結合的概念。 Mar 21, 2025 pm 01:33 PM

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

描述紮實的原則及其如何應用於PHP的開發。 描述紮實的原則及其如何應用於PHP的開發。 Apr 03, 2025 am 12:04 AM

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

框架安全功能:防止漏洞。 框架安全功能:防止漏洞。 Mar 28, 2025 pm 05:11 PM

文章討論了框架中的基本安全功能,以防止漏洞,包括輸入驗證,身份驗證和常規更新。

自定義/擴展框架:如何添加自定義功能。 自定義/擴展框架:如何添加自定義功能。 Mar 28, 2025 pm 05:12 PM

本文討論了將自定義功能添加到框架上,專注於理解體系結構,識別擴展點以及集成和調試的最佳實踐。

如何在系統重啟後自動設置unixsocket的權限? 如何在系統重啟後自動設置unixsocket的權限? Mar 31, 2025 pm 11:54 PM

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...

如何用PHP的cURL庫發送包含JSON數據的POST請求? 如何用PHP的cURL庫發送包含JSON數據的POST請求? Apr 01, 2025 pm 03:12 PM

使用PHP的cURL庫發送JSON數據在PHP開發中,經常需要與外部API進行交互,其中一種常見的方式是使用cURL庫發送POST�...

See all articles