PHP正則表達式的運用

正則表達式是 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()爲該函數的別名。
該函數有兩個參數,第一個參數提高一個鏈接字符或字符串,第二個參數指定一個被鏈接的數組。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章