第4章正則表達(dá)式和異常處理(理論)_第1頁
第4章正則表達(dá)式和異常處理(理論)_第2頁
第4章正則表達(dá)式和異常處理(理論)_第3頁
第4章正則表達(dá)式和異常處理(理論)_第4頁
第4章正則表達(dá)式和異常處理(理論)_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、HCCE 2010HCCE 2010課程體系介紹課程體系介紹第第4章章 正則表達(dá)式和異常處理正則表達(dá)式和異常處理前言前言uPHP數(shù)組、字符串以及相應(yīng)的常用函數(shù)uPHP的面向?qū)ο蟊菊聝?nèi)容本章內(nèi)容uPOSIX正則表達(dá)式uPerl正則表達(dá)式u異常處理本章目標(biāo)本章目標(biāo)u熟練使用PHP正則表達(dá)式u能夠處理各種異常1.POSIX1.POSIX正則表達(dá)式正則表達(dá)式u POSIX風(fēng)格的正則表達(dá)式由正則字符和元字符構(gòu)成,二者聯(lián)合構(gòu)成了一 個文本模式的程序描述。因此正則表達(dá)式允許對文本內(nèi)的模式和子模式 進(jìn)行匹配字 符含 義()將不同的字符串組成一組,也稱為子模式定義字符集合指定重復(fù)次數(shù)在字符串的開始匹配或者表示不

2、在某個字符串集合內(nèi)$在字符串的結(jié)尾匹配.匹配除換行符(n)之外的任意字符?重復(fù)零次或者一次*重復(fù)零次或者多次+重復(fù)一次或者多次轉(zhuǎn)義字符|或者,選擇分支的標(biāo)識1.1 1.1 字符集和類字符集和類u字符集,可以匹配指定類型的任何字符 字符含義a-z小寫字母字符A-Z大寫字母字符a-zA-Z大小寫字母字符0-9數(shù)字字符0-9+-*數(shù)字字符、加號、減號、乘號和除號frnt空白字符字符集和類字符集和類u字符類,對整個字符范圍進(jìn)行指定 字符類含義:alnum:字母字符和數(shù)字字符,等價于a-zA-Z0-9:alpha:字母字符,等價于a-zA-Z:upper:大寫字母字符,等價于A-Z:lower:小寫字母

3、字符,等價于a-z:digit:數(shù)字字符,等價于0-9:blank:空格符和制表符:space:空白字符,包括空格、水平制表符、垂直制表符、換行、換頁、回車:print:可打印字符:ascii:7位ASCII碼:xdigit:十六進(jìn)制字符,等價于a-fA-F0-9:punct:標(biāo)點(diǎn)符號:graph:ASCII碼從33126之間可打印字符1.2 1.2 量詞量詞u量詞也被稱為限定符,用于指定字符必須出現(xiàn)的次數(shù) 字符含義*重復(fù)任意次(包括零次)+重復(fù)一次或多次?重復(fù)零次或一次n重復(fù)n次,其中n上一個非負(fù)整數(shù)n,重復(fù)至少n次,其中n是一個非負(fù)整數(shù)n,m重復(fù)至少n次到m次,其中m和n均為非負(fù)整數(shù)并且m

4、大于n1.3 POSIX1.3 POSIX正則表達(dá)式函數(shù)正則表達(dá)式函數(shù)uereg()函數(shù)n 可以在字符串中查找與指定正則表達(dá)式模式匹配的子串 示例1.1.phpPOSIXPOSIX正則表達(dá)式函數(shù)正則表達(dá)式函數(shù)usplit()函數(shù)n 使用正則表達(dá)式把字符串拆分為較小的塊,并作為一個數(shù)組返回$part1 = split($pattern,$string,$limit);$part2 = split($pattern,$string);echo ;print_r($part1);示例1.2.phpPOSIXPOSIX正則表達(dá)式正則表達(dá)式uereg_replace()函數(shù)n 用來查找和替換子字符串。n

5、 與字符串處理函數(shù)str_replace()實(shí)現(xiàn)的功能相同示例1.3.php2.Perl2.Perl正則表達(dá)式正則表達(dá)式u說明n Perl正則表達(dá)式英文名稱為Perl Compatible Regular Expression,縮寫為PCRE。PCRE庫包括一套執(zhí)行常用表達(dá)模式的函數(shù),語法來源于Perl語言。與POSIX正則表達(dá)式不同,Perl正則表達(dá)式需要以分隔符作為開始和結(jié)束標(biāo)識。Perl正則表達(dá)式通常使用正斜杠“/”作為定界符 “/wh/”3.2 3.2 PerlPerl修飾符修飾符u在Perl正則表達(dá)式的最后一個分隔符后,可以添加Perl修飾符來更改正則表達(dá)式的行為修飾符說明i忽略大小

6、寫m除了匹配字符串的開始和結(jié)尾還匹配其中的換行符的之后或之前s模式中的圓點(diǎn)元字符“.”匹配所有的字符x表達(dá)式中的空白字符將會被忽略,除非它已經(jīng)被轉(zhuǎn)義D模式中的美元元字符僅匹配目標(biāo)字符串的結(jié)尾U和問號的作用相似2.2 2.2 元字符元字符元 字 符含 義A匹配字符串的開頭B匹配除單詞邊界之外的任意字符b匹配單詞邊界D匹配非數(shù)字字符d匹配數(shù)字字符,等價于0-9S匹配非空白字符s匹配空白字符W匹配任意字母和數(shù)字w匹配任意非單詞字符匹配指定范圍內(nèi)的其中一個字符2.2 2.2 元字符元字符元 字 符含 義匹配指定范圍內(nèi)的其中一個字符()用于將正則表達(dá)式和元字符或表達(dá)式進(jìn)行組合$匹配字符串的結(jié)束匹配字符串

7、的開始.匹配除換行之外的任何一個字符x重復(fù)x次x,y至少重復(fù)x次,最多重復(fù)y次x,至少重復(fù)x次*重復(fù)0次或更多次?重復(fù)0次或1次+重復(fù)1次或多次|匹配其中任意一個轉(zhuǎn)義字符2.3 2.3 正則表達(dá)式函數(shù)正則表達(dá)式函數(shù)u正則表達(dá)式函數(shù)(Perl風(fēng)格)nPHP為使用Perl兼容的正則表達(dá)式提供了7個常用的函數(shù),包括:preg_grep()、preg_match()、preg_match_all()、preg_quote()、preg_replace()、preg_replace_callback()和preg_split()。利用這些函數(shù)可以方便地實(shí)現(xiàn)對字符串的搜索與替換、分割與合并正則表達(dá)式函數(shù)正

8、則表達(dá)式函數(shù)upreg_grep()函數(shù)n按指定的正則表達(dá)式搜索和匹配。其對一個數(shù)組進(jìn)行匹配和搜索,搜索成功則返回匹配的數(shù)組元素 ?php$input = array(東方不敗,張無忌,西方不敗,獨(dú)孤求敗,張三豐,武則天,信春哥得永生);$arr1 = preg_grep(/張/,$input);$arr2 = preg_grep(/敗/,$input);$arr3 = preg_grep(/敗/,$input,PREG_GREP_INVERT);echo ;print_r($arr1);print_r($arr2);print_r($arr3);echo ;?示例2.1.php正則表達(dá)式函數(shù)

9、正則表達(dá)式函數(shù)upreg_match()函數(shù)n 按指定的正則表達(dá)式搜索和匹配一次?php$subject = 熱愛社會主義新中國!;preg_match(/社會/,$subject,$arr,PREG_OFFSET_CAPTURE);echo ;print_r($arr);echo ;?示例2.2.php正則表達(dá)式函數(shù)正則表達(dá)式函數(shù)upreg_split()函數(shù)n將字符串按指定的規(guī)則進(jìn)行分割,用法和split()方法非常相似,只是函數(shù)preg_split()只是使用正則表達(dá)式?php$subject = 123灰太狼4523紅太郎22喜羊羊55懶羊羊78沸羊羊3234;$pattern = /

10、0-91,/;$arr1 = preg_split($pattern,$subject);echo ;print_r($arr1);echo ;?示例2.3.php3.3.正則表達(dá)式的深入分析正則表達(dá)式的深入分析 u分析示例3.1.phpn 正則表達(dá)式是萬能的么?n 什么時候不適宜使用正則表達(dá)式?4.4.錯誤和異常處理錯誤和異常處理 u 在項(xiàng)目開發(fā)過程中,錯誤和異常是不可避免的,也是PHP程序 員不希望發(fā)生的。為了盡可能多地避免類似情況,所以程 序員必備的能力之一就是如何有效地調(diào)試錯誤并修改錯誤。PHP 中提供了許多有效方法來處理錯誤和異常,如錯誤級別控制、 錯誤顯示控制和自定義錯誤等。不僅如

11、此,在PHP5中還針對類特 別地引入了異常處理機(jī)制,增強(qiáng)了PHP的錯誤調(diào)試功能4.1 4.1 常見的基本錯誤類型常見的基本錯誤類型 n 語法錯誤n 邏輯錯誤n 定義錯誤n 環(huán)境錯誤n 運(yùn)行錯誤u常見的基本錯誤類型分為:4.2 PHP4.2 PHP的錯誤級別的錯誤級別 u 錯誤級別控制通過php.ini文件中的“error_reporting”配置選項(xiàng)進(jìn)行配置名稱含義E_ERROR致命的運(yùn)行錯誤,中斷程序的執(zhí)行E_WARNING運(yùn)行警告,不中斷程序的執(zhí)行E_PARSE編譯錯誤,PHP強(qiáng)制中止執(zhí)行操作E_STRICTPHP版本可移植性建議E_NOTICE錯誤警告,默認(rèn)情況下不輸出主意信息E_COR

12、E_ERROR內(nèi)部錯誤,擴(kuò)展啟動失敗導(dǎo)致的,會導(dǎo)致PHP運(yùn)行退出。E_CORE_WARNING有PHP的核心產(chǎn)生,通常是由一個PHP擴(kuò)展加載時失敗引發(fā)。PHP引擎將終止運(yùn)行4.2 PHP4.2 PHP的錯誤級別的錯誤級別 u 錯誤級別控制通過php.ini文件中的“error_reporting”配置選項(xiàng)進(jìn)行配置名稱含義E_COMPILE_ERROR編譯錯誤,與E_PARSE不同,這個錯誤會導(dǎo)致PHP運(yùn)行退出。E_COMPILE_WARNINGPHP編譯時產(chǎn)生,提示用戶在使用一些過時的語法。E_USER_ERROR用戶定義錯誤導(dǎo)致PHP退出執(zhí)行。用戶定義錯誤(E_USER_*)不是來自PHP本

13、身,而是包含在腳本中。E_USER_WARNING用戶定義的警告信息??捎糜谀_本可能發(fā)生錯誤的信號。E_USER_NOTICE用戶定義的通告可以用來在腳本中可能存在錯誤。E_ALL報告所有的錯誤和警告,包括上面所有的錯誤PHPPHP的錯誤級別的錯誤級別uini_set()函數(shù)n控制PHP錯誤異常報告的設(shè)置是“display_errors”。當(dāng)PHP環(huán)境中已經(jīng)關(guān)閉了錯誤報告(display_errors = off)、在維護(hù)過程中又要立刻顯示程序錯誤的時候,就需要用到“ini_set()”方法ini_set(display_errors,off); /報錯關(guān)閉ini_set(display_er

14、rors,on); /報錯開啟4.3 4.3 錯誤處理函數(shù)錯誤處理函數(shù) u正則表達(dá)式函數(shù)n當(dāng)程序出現(xiàn)錯誤或者用戶操作不當(dāng)時,我們可以使用trigger_error()函數(shù)來觸發(fā)自己定義的錯誤信息示例4.1.php4.4 4.4 自定義錯誤頁面自定義錯誤頁面 u自定義錯誤頁面的使用n當(dāng)程序出現(xiàn)錯誤或者用戶操作不當(dāng)時,我們可以使用trigger_error()函數(shù)來觸發(fā)自定義的錯誤信息elseheader(Location: error.php);exit();示例4.2.php 友情提示:您訪問的頁面有錯或不存在!4.5 4.5 異常處理異常處理 u 拋出和捕獲異常開始異常檢測開始是 否 拋出異常異常處理異常處理異常檢測結(jié)束其他代碼結(jié)束4.6 PHP4.6 PHP的基本異常類的基本異常類 u異常處理n PHP的異常類示例4.4.phpgetMessage() . ;echo 錯誤文件路徑: . $e-getFile() . ;echo 錯誤代碼行號: . $e-getLine();?4.7 4.7 擴(kuò)展基本異常類擴(kuò)展基本異常類 u異常處理n擴(kuò)展基本異常類 示

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論