版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第8章 正則表達式正則表達式應用范圍很廣泛,不僅PHP腳本支持正則表達式,類似JavaScript這類的客戶端腳本,也提供了對正規(guī)表示式的支持。正則表達式是一種用于模式匹配和替換的表達式,主要用于復雜的字符串操作。本章主要介紹PHP中,關于正則表達式的函數(shù),以及其在實際應用中的例子。18.1 POSIX擴展正則表達式函數(shù)在PHP中,關于正則表達式的函數(shù)不多,但是足以滿足對復雜字符串操作的需要。本節(jié)主要介紹正則表達式的基礎知識和相關函數(shù)使用方法。28.1.1 正則表達式基礎在介紹正則表達式之前,先對正則表達式的語法做一下了解。不同的腳本語言,正則表達式的表示方法略有不同,本小節(jié)以PHP作為標準。
2、首選正則表達式是一個字符串,在這個字符串內,可以設定一些規(guī)則,當正則表達式函數(shù)使用這些規(guī)則時,就可以根據(jù)已經(jīng)設定好的內容,對指定的字符串進行替換或匹配的操作。作為進一步的了解,下面列出幾個簡單的正則表達式。d6:表示一個由6位數(shù)字組成的字符串。 A-Za-z0-9:匹配所有大寫字母、小寫字母及0到9的數(shù)字。open:表示以open開始的字符串。something$:表示以something結尾的字符串。a-zA-Z:表示一個以字母開頭的字符串。go2:表示字母g后面跟著2個o即:goo。38.1.2 正則表達式替換ereg_replace()與str_replace()函數(shù)一樣,都可以把字符串
3、中查找到的子字符串,替換為指定的字符串,而ereg_replace()函數(shù),還可以使用正則表達式來查找和替換,實現(xiàn)更復雜的字符串操作。下面演示ereg_replace()函數(shù)的使用方法,代碼如清單所示。清單 ereg_replace()函數(shù)的使用方法?php/簡單的替換$year = 2008;$string = 北京將于二零零八年舉辦奧運會;/使用ereg_replace()函數(shù)替換字符串echo ereg_replace(二零零八,$year,$string).;echo ereg_replace ()二零零八, 12008, $string).; echo ereg_replace ()
4、二零零八), 22008, $string).;echo ereg_replace ()二零零八), 32008, $string).;/以下情況是非法的echo ereg_replace ()二零零八), 42008, $string).;/參數(shù)2中指定的子字符串數(shù)大小括號的嵌套數(shù)?48.1.3 正則表達式匹配使用ereg()函數(shù),可以查找字符串與子字符串匹配的情況,并返回匹配字符的長度,還可以借助參數(shù)把返回匹配字符的數(shù)組。下面演示ereg函數(shù)的使用方法,代碼如清單所示。58.1.4 不區(qū)分大小寫的正則表達式替換eregi_replace()與ereg_replace()一樣,都可用于正則表
5、達式的替換,唯一的區(qū)別在于,eregi_replace()函數(shù)會忽略要操作字符串中字母的大小寫。下面演示eregi_replace()函數(shù)的使用方法,代碼如清單所示。清單 eregi_replace()函數(shù)的使用方法?php/定義一個包含有大小寫字母的字符串$string = beijing 2008 BeiJing;echo 使用ereg_replace()函數(shù)替換beijing字符串:;$string = ereg_replace(beijing),1,$string);echo $string;echo ;echo 使用eregi_replace()函數(shù)替換beijing字符串:;$st
6、ring = eregi_replace(beijing),1,$string);echo $string;?68.1.5 不區(qū)分大小寫的正則表達式匹配eregi()與ereg ()一樣,都可用于正則表達式的匹配,唯一的區(qū)別在于,eregi ()函數(shù)會忽略要操作字符串中字母的大小寫。下面演示eregi ()函數(shù)的使用方法,代碼如清單所示。清單 eregi ()函數(shù)的使用方法?php/定義一個包含有大小寫字母的字符串$string = AAbbBcDDeeEE;if(ereg(abcde,ABCDE,$array)echo 使用ereg()查找匹配的字符串;print_r($array);if(
7、eregi(abcde,ABCDE,$array)echo 使用eregi()查找匹配的字符串;print_r($array);?78.1.6 使用正則表達式分割數(shù)組使用split()函數(shù),不僅可以完成與explode()函數(shù)同樣的功能,而且還可以根據(jù)給出的正則表達式,來分割字符串,并返回一個數(shù)組。下面演示split()函數(shù)的使用方法,88.1.7 用正則表達式不區(qū)分大小寫將字符串分割到數(shù)組中 spliti()與split()一樣,都可以根據(jù)正則表達式,來分割字符串,唯一的區(qū)別在于,spliti ()函數(shù)會忽略要操作字符串中字母的大小寫。下面演示spliti ()函數(shù)的使用方法,代碼如清單所示
8、。清單 spliti()函數(shù)的使用方法?php/定義一個包含有大小寫字母的字符串$string = AAbbBcDDeeEE;if(ereg(abcde,ABCDE,$array)echo 使用ereg()查找匹配的字符串;print_r($array);if(eregi(abcde,ABCDE,$array)echo 使用eregi()查找匹配的字符串;print_r($array);?98.1.8 產(chǎn)生不區(qū)分大小匹配的正則表達式使用sql_regcase()函數(shù),可以根據(jù)參數(shù)的字符串,產(chǎn)生一個不區(qū)分大小寫的正則表達式。這大大減少了在腳本中,建立字符匹配正則表達式的時間。下面演示sql_re
9、gcase()函數(shù)的使用方法,代碼如清單所示。108.2 PERL兼容正則表達式函數(shù)PERL兼容正則表達式函數(shù),使用的模式類似于Perl中的語法。其表達式應包含在定界符中,除數(shù)字、字母、反斜線外的任務字符,都可以做字界符使用,如果作為定界符的字符要出現(xiàn)在表達式中,可以使用反斜線進行轉。118.2.1 返回與模式匹配的數(shù)組單元使用preg_grep()函數(shù),可以根據(jù)給定的字符或正則表達式,查找指定數(shù)組,并返回與查找條件匹配的單元。下面演示preg_grep()函數(shù)的使用方法,代碼如清單所示。128.2.2 正則表達式匹配使用preg_match()函數(shù),可以查找字符串與子字符串匹配的情況,并返回
10、匹配字符的長度,還可以借助參數(shù)把返回匹配字符的數(shù)組。下面演示preg_match()函數(shù)的使用方法,代碼如清單所示。138.2.3 全局正則表達式匹配preg_match_all()函數(shù)可以在字符串中搜索,與給出的正則表達式匹配的內容,并將結果按指定的順序放到數(shù)組中。preg_match_all()與preg_match()函數(shù)的作用都是一樣的,其區(qū)別在于,preg_match()函數(shù)在搜索到第1個字符匹配后,將停止搜索。而preg_match_all()函數(shù)在搜索到第1個匹配后,會從第1個匹配項后繼續(xù)搜索,依次類推,直到搜索完整個字符串。下面演示preg_match_all()函數(shù)的使用方法
11、,代碼如清單所示。148.2.4 轉義正則表達式字符當在正則表達式中使用特列符號時,需要對這些特殊符號進行轉義。使用preg_quote()函數(shù),可以對指定的字符串的中特殊字符,自動進行轉義操作,這些字符包括:“.、+、*、?、$、(、)、=、!、|、:”。preg_quote()函數(shù),不僅可以用于轉義正則表達式的特殊字符,也可以為字符串中的特殊字符加上反斜線。下面演示preg_quote()函數(shù)的使用方法,代碼如清單所示。158.2.5 正則表達式的搜索和替換使用preg_replace()函數(shù),可以在字符串中搜索,與正則表達式匹配的項,并替換為一個指定的字符串。preg_replace()
12、函數(shù)默認替換所有匹配項,也可以使用參數(shù)控制替換的匹配項。preg_replace()函數(shù)與ereg_replace()函數(shù),實現(xiàn)的功能是一樣的,下面特別演示preg_replace()函數(shù)將HTML轉換為文本的方法,preg_replace()函數(shù)有4個參數(shù):第1個參數(shù)是必選參數(shù),用于指定要查找的字符或正則表達式。第2個參數(shù)是必選參數(shù),用于指定替換匹配項的字符串。第3個參數(shù)是必選參數(shù),用于指定要查找的字符串。第4個參數(shù)是可選參數(shù),當使用該參數(shù)后,preg_replace()函數(shù)會根據(jù)這個參數(shù)的值,替換個數(shù)的匹配項。168.2.6 用正則表達式分割字符串使用preg_split()函數(shù),將返回一
13、個數(shù)組,數(shù)組的每個單元是使用正則表達式作為邊界,分割出的子字符串。preg_split()函數(shù)還可以設定返回數(shù)組單元的個數(shù)。下面演示preg_split()函數(shù)的使用方法,代碼如清單所示。178.3 正則表達式應用實例正則表達式主要應用在復雜字符串操作中,最經(jīng)常使用的是檢驗某類特殊字符串,如:電子郵件地址、IP地址、郵政編碼等。本節(jié)將介紹正則表達式的應用實例,并列出部分常用正則表達式供讀者參考。188.3.1 正則表達式的應用正則表達式的應用很廣泛,特別是在一些復雜字符串操作時,使用正則表達式,將會變得非常簡單。下面簡單演在PHP中使用正則表達式的方法,定義了一個用于檢查電子郵件地址的函數(shù),其
14、核心語句是ereg()函數(shù)。電子郵件地址的命名規(guī)則是:以字母、數(shù)字、下劃線及中劃線開頭,后跟“”符號,其后跟字母、數(shù)字、下劃線及中劃線組成的字符串,其后跟“.”符號,其后跟字母、數(shù)字、下劃線及中劃線組成的字符串,使用正則表達式表示就是:(a-zA-Z0-9_-)+(a-zA-Z0-9_-)+(.a-zA-Z0-9_-)+。在建立與電子郵件地址相匹配的正則表達式后,就可以使用ereg()函數(shù)來對模式與字符串進行匹配,如果相匹配就是正確的電子郵件地址,如果不匹配就是非法郵件地址。198.3.2 匹配特定數(shù)字正則表達式可以用于數(shù)字的匹配,下面演示特定數(shù)字的正則表達式的方法,代碼如清單所示。208.3
15、.3 匹配特定字符串正則表達式一個重要的作用就是,處理復雜的字符串,而字符串匹配,主要是針對26個英文字母來進行的。下面演示匹配特定字符串的正則表達式,代碼如清單所示。218.3.4 常用正則表達式除了用于匹配特定數(shù)字和字符外,下面列出一些常用的正則表達式,供讀者參考,演示代碼如清單所示。228.4 常見問題正則表達式可以處理很復雜的字符串,但是其語法相對來說也是比較復雜,在學習正則表達式時,注意多參考例子。由于正則表達式函數(shù)實現(xiàn)的功能,有一些字符串函數(shù)也可以實現(xiàn),所以在實際應用中,應該根據(jù)實際情況選擇使用。238.4.1 關于正則表達式的語法在本章中,介紹了正則表達式的相關語法,其中主要語法
16、都可以在表8-1中查找。表8-1中的正則表達式語法,包括了POSIX擴展與PERL兼容兩種正則表達式的語法,在使用時要注意,POSIX擴展正則表達式函數(shù),不支持類似的表達式:d、w等。 可以通過一段代碼,來演示兩類函數(shù)正則表達式語法的區(qū)別,代碼如下所示。?php/定義一個字符串,存儲一個網(wǎng)址$url = :/ rzphp ;/使用POSIX擴展正則表達式函數(shù)把網(wǎng)址轉化為一個連接echo ereg_replace(:alpha:+:/:space:+:alnum:/, 0,$url);/使用PERL兼容正則表達式函數(shù)把網(wǎng)址轉化為一個連接echo preg_replace(/:alpha:+:/:space:+:alnum:/, 0,$url);?248.4.2 關于字符串替換正則表達式函數(shù),如ereg_repalce()、eregi_replace()、preg_replace()函數(shù),都可以實現(xiàn)字符串的替換。但并不是所有的字符串替換,都必須使用正則表達式來完成,str_replace()在完成普通的字符串替換時,比正則表達式有優(yōu)勢,只有在替換復雜的字符串時,正則表達式才能體現(xiàn)出價值。在同樣使用正則表達式替換字符串時,推薦使用preg_replac
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 課題申報參考:金銀繡藝術特征及其傳承創(chuàng)新研究
- 二零二五版能源設施安全防護勞務分包協(xié)議3篇
- 二零二五版房地產(chǎn)開發(fā)經(jīng)營項目環(huán)境保護合同范本3篇
- 2025年常州貨運資格證在哪里練題
- 二零二五版毛竹砍伐與林業(yè)碳交易市場接入合同4篇
- 2025年光伏發(fā)電項目投資合作合同模板4篇
- 二零二五年度出租車公司車輛融資租賃合同5篇
- 二零二五年度農(nóng)產(chǎn)品電商平臺合作協(xié)議6篇
- 2025年度智能倉儲物流系統(tǒng)承包經(jīng)營協(xié)議書4篇
- 二零二五年度企業(yè)信用擔保合同模板:降低融資風險2篇
- 課題申報書:GenAI賦能新質人才培養(yǎng)的生成式學習設計研究
- 駱駝祥子-(一)-劇本
- 全國醫(yī)院數(shù)量統(tǒng)計
- 《中國香文化》課件
- 2024年醫(yī)美行業(yè)社媒平臺人群趨勢洞察報告-醫(yī)美行業(yè)觀察星秀傳媒
- 第六次全國幽門螺桿菌感染處理共識報告-
- 天津市2023-2024學年七年級上學期期末考試數(shù)學試題(含答案)
- 經(jīng)濟學的思維方式(第13版)
- 盤錦市重點中學2024年中考英語全真模擬試卷含答案
- 手衛(wèi)生依從性調查表
- 湖北教育出版社四年級下冊信息技術教案
評論
0/150
提交評論