PHP正規表示式的運用

2021-09-22 16:25:23 字數 2409 閱讀 3216

正規表示式是 php 中乙個非常重要的知識點,通常用來查詢和替換字串,驗證使用者輸入的資訊格式是否符合規範,如郵件格式、**格式等等。還有採集器之類的軟體中,正則也是必用不可!主要介紹php中幾個常見的正則函式:preg_match()、preg_match_all()、preg_grep()、preg_split()。

1.preg_match()

該函式通常用於表單驗證。可以按指定的正規表示式模式,對字串進行搜尋和匹配一次.該函式有兩個必選引數,第乙個引數需要提供使用者按正規表示式語法編寫的模式,第二個引數需要乙個字串。如果提供了第三個可選的陣列引數matches,則可以擁有儲存第乙個引數中的子模式的各個部分的匹配結果。

2.preg_match_all()

該函式與preg_match()函式類似,不同的是函式preg_match()在第一次匹配之後就會停止搜尋。而函式preg_match_all()則會一直搜尋到指定字串的結尾,可以獲取到所有匹配到的結果。

該函式把所有可能的匹配結果放入第三個引數的陣列中,並返回整個模式匹配的次數,如果出錯則返回false。如果使用了第四個引數,會根據它指定的順序將每次出現的匹配結果儲存到第三個引數的陣列中。第四個引數有兩個預定義的值

a.preg_pattern_order: 它是preg_match_all() 函式的預設值,對結果排序使$matches[0]為全部模式匹配的陣列,$matches[1] 為第乙個括號中的子模式所匹配的字串組成的陣列,以此類推。

b.preg_set_order: 對結果排序是$matches[0]為第一組匹配項的陣列,$matches[1]為第二組匹配項的陣列,以此類推。

3.preg_grep()

該函式與前兩個函式不同的是匹配陣列中的元素,返回與正規表示式匹配的陣列單元。

該函式返回乙個陣列,其中包括了第二個引數陣列中與給定的第乙個引數模式相匹配的單元,對於輸出陣列的每個元素,進行依稀匹配。

4.preg_replace()

該函式可執行正規表示式的搜尋和替換,是乙個最強大的字串替換處理函式。

該函式的三個引數,第乙個引數匹配項,二個引數被替換的引數。第三個被搜多的引數。 如果指定第四個可選引數limit ,則僅替換limit個匹配,如果生了limit 或者其值為-1,則所有的匹配項都會被替換。

5.str_replace()

該函式是php提高的字串處理函式,也可以實現字串的替換工資。雖然沒有正規表示式的替換函式功能強大,但一些簡單字串的替換要比preg_replace()函式的執行效率高。

該函式有單個必選引數,還有乙個可選引數,第乙個引數是目標物件,第二個引數是替換物件,第三個是被處理的字串,該函式在第三個引數的字串中,以區分大小寫的方式搜尋第乙個引數提高的目標物件,並用第二個引數所提供的替換物件替換找到的所有例項。如果沒有在第三個引數中搜尋到目標物件,則被處理的字串保持不變。第四個是乙個可選引數,變數的引用,必須傳入乙個變數名稱,用來儲存替換的次數。

使用str_replace()的前兩個引數不僅可以使用字串,也可以使陣列。

6.preg_split()

該函式使用了perl相容的正規表示式語法,可以按正規表示式的方法分割字串。

該函式返回乙個字串陣列,陣列中元素包含通過第二個引數中的字串,經第乙個引數的正規表示式,作為匹配的邊界分割的子串。如果指定了第三個字串limit,則最多返回linmit個子串。而其中最後乙個元素包含了被分割後剩餘的所有部分。如果limit是-1,則意味著沒有限制。 第四個引數是可選引數,

>> preg_split_no_empty:如果設定了本標記,則preg_split()只返回非空的成分

>> preg_split_delim_capture: 如果設定了本標記,定界符模式中的括號表示式也會**獲並返回

>> preg_split_offset_capture: 如果設定了本標記,對每個出現的匹配結果也同時返回其附屬的字串偏移量。注意這改變了返回的陣列的值,使其中的每個單元也是乙個陣列,其中第一項為匹配字串,第二項為其在原字串中的偏移量。

函式explode()

如果僅用某個特定的字串進行分割,建議使用explode()函式,它不用去呼叫正規表示式引擎,因此速度是最快的。

該函式有三個引數,第乙個引數提高乙個分割字元或是字串,第二個引數是被分割的字串,如果提供第三個可選引數limit,則指定最多將字串分割為多少個子串。該函式返回乙個由被分割的子字串組成的陣列。

函式 implode()

與分割字串相對應的是implode()函式,把陣列中所有元素組合為乙個字串。函式join()為該函式的別名。

該函式有兩個引數,第乙個引數提高乙個鏈結字元或字串,第二個引數指定乙個被鏈結的陣列。

正規表示式的運用

re模組 集中了正規表示式所有的功能 郵箱位址 a za z0 9 a za z com edu net 其中 a za z0 9 表示乙個字元要滿足中括號裡的範圍,字元可以是a z或者a z或者0 9或者 元字元包括 所以需要匹配元字元時需要加上反斜線 可以出現1到n次 接著加上 字元 a za ...

正規表示式的運用

靶場位址 原理 又稱規則表示式,電腦科學的乙個概念,正規表示式通常被用來檢索 替換那些符合某個模式 規則的文字 這裡是指將正則匹配到的值賦值給變數 regular if判斷語句,這裡是指當變數 regular有值時將輸出變數key,也就是flag 那麼我只需要構造成能成功匹配正則的值就能成功輸出fl...

中運用正規表示式

看到大家討論這方面的東西,作點貢獻聊表各位高手對這個版快的無私奉獻 oops 如果使用者熟悉linux下的sed awk grep或vi,那麼對正規表示式這一概念肯定不會陌生。由於它可以極大地簡化處理字串時的複雜度,因此現在已經在許多linux實用工具中得到了應用。千萬不要以為正規表示式只是perl...