<轉>PHP中正則表達式函數


PHP中的正則表達式函數

      在PHP中有兩套正則表達式函數庫。一套是由PCRE(Perl Compatible Regular Expression)庫提供的,基於傳統型NFA。PCRE庫使用和Perl相同的語法規則實現了正則表達式的模式匹配,其使用以“preg_”為前綴命名的函數。另一套是由POSIX(Portable Operation System interface)擴展庫提供的,基於POSIX NFA。POSIX擴展的正則表達式由POSIX 1003.2定義,一般使用以“ereg_”為前綴命名的函數。

兩套函數庫的功能相似,執行效率稍有不同。一般而言,實現相同的功能,使用PCRE庫的效率略占優勢。下面詳細介紹其使用方法。

正則表達式的匹配

  1.preg_match()

    函數原型:int preg_match (string pattern,stringpattern,stringcontent [, array $matches])

    preg_match ()函數在contentcontent字符串中搜索與pattern給出的正則表達式相匹配的內容。如果提供了matchesmatches,則將匹配結果放入其中。matches[0]將包含與整個模式匹配的文本,$matches[1]將包含第一個捕獲的與括號中的模式單元所匹配的內容,以此類推。該函數只 作一次匹配,最終返回0或1的匹配結果數。

   2.ereg()和eregi()

    ereg()是POSIX擴展庫中正則表達式的匹配函數。eregi()是ereg()函數的忽略大小寫的版 本。二者與preg_match的功能類似,但函數返回的是一個布爾值,表明匹配成功與否。需要說明的是,POSIX擴展庫函數的第一個參數接受的是正則 表達式字符串,即不需要使用分界符。

 

     3.preg_grep()

  函數原型:array preg_grep (string pattern,arraypattern,arrayinput)

  preg_grep()函數返回一個數組,其中包括了inputinput數組中與給定的pattern模式相匹配的單元。對於輸入數組$input中的每個元素,preg_grep()也只進行一次匹配。代碼6.3給出的示例簡單地說明了preg_grep()函數的使用。

 

進行全局正則表達式匹配

  1.preg_match_all()

  與preg_match()函數類似。如果使用了第三個參數,將把所有可能的匹配結果放入。本函數返回整個模 式匹配的次數(可能為0),如果出錯返回False。   

  2.多行匹配

  僅僅使用POSIX下的正則表式函數,很難進行復雜的匹配操作。例如,對整個文件(尤其是多行文本)進行匹配查找。使用ereg()對此進行操作的一個方法是分行處理。

正則表達式的替換

   1.ereg_replace()和eregi_replace()  

  函數原型:string ereg_replace (string pattern,stringpattern,stringreplacement, string $string)

                  string eregi_replace (string pattern,stringpattern,stringreplacement, string $string)

  ereg_replace()在stringstring中搜索模式字符串pattern,並將所匹配結果替換 為replacementreplacement。當pattern中包含模式單元(或子模式)時,replacement\1replacement中形如“\1”或“1”的位置將依次被這些子 模式所匹配的內容替換。而“\0”或“$0”是指整個的匹配字符串的內容。需要注意的是,在雙引號中反斜線作為轉義符使用,所以必須使用“\\0”,“ \\1”的形式。

eregi_replace()和ereg_replace()的功能一致,只是前者忽略大小寫。

  2.preg_replace()

  函數原型:mixed preg_replace (mixed pattern,mixedpattern,mixedreplacement, mixed subject[,intsubject[,intlimit])

  preg_replace較ereg_replace的功能更加強大。其前三個參數均可以使用數組;第四個參數$limit可以設置替換的次數,默認為全部替換。

 

正則表達式的拆分

  1.split()和spliti()

  函數原型:array split (string pattern,stringpattern,stringstring [, int $limit])

  本函數返回一個字符串數組,每個單元為stringstring經正則表達式pattern作為邊界分割出的子串。如 果設定了limitlimit,則返回的數組最多包含limit個單元。而其中最后一個單元包含了$string中剩余的所有部分。spliti是split的 忽略大小版本。

  2.preg_split()

  本函數與split函數功能一致。

作者:青玉伏案 
出處:http://www.cnblogs.com/ludashi/ 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM