版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
HCCE2010課程體系介紹第4章正則表達式和異常處理前言PHP數(shù)組、字符串以及相應(yīng)的常用函數(shù)PHP的面向?qū)ο蟊菊聝?nèi)容POSIX正則表達式Perl正則表達式異常處理本章目標(biāo)熟練使用PHP正則表達式能夠處理各種異常1.POSIX正則表達式
POSIX風(fēng)格的正則表達式由正則字符和元字符構(gòu)成,二者聯(lián)合構(gòu)成了一個文本模式的程序描述。因此正則表達式允許對文本內(nèi)的模式和子模式進行匹配字
符含
義()將不同的字符串組成一組,也稱為子模式[]定義字符集合{}指定重復(fù)次數(shù)^在字符串的開始匹配或者表示不在某個字符串集合內(nèi)$在字符串的結(jié)尾匹配.匹配除換行符(\n)之外的任意字符?重復(fù)零次或者一次*重復(fù)零次或者多次+重復(fù)一次或者多次\轉(zhuǎn)義字符|或者,選擇分支的標(biāo)識1.1字符集和類字符集,可以匹配指定類型的任何字符
字符含義[a-z]小寫字母字符[A-Z]大寫字母字符[a-zA-Z]大小寫字母字符[0-9]數(shù)字字符[0-9\+\-\*\\]數(shù)字字符、加號、減號、乘號和除號[\f\r\n\t]空白字符字符集和類字符類,對整個字符范圍進行指定
字符類含義[[:alnum:]]字母字符和數(shù)字字符,等價于[a-zA-Z0-9][[:alpha:]]字母字符,等價于[a-zA-Z][[:upper:]]大寫字母字符,等價于[A-Z][[:lower:]]小寫字母字符,等價于[a-z][[:digit:]]數(shù)字字符,等價于[0-9][[:blank:]]空格符和制表符[[:space:]]空白字符,包括空格、水平制表符、垂直制表符、換行、換頁、回車[[:print:]]可打印字符[[:ascii:]]7位ASCII碼[[:xdigit:]]十六進制字符,等價于[a-fA-F0-9][[:punct:]]標(biāo)點符號[[:graph:]]ASCII碼從33~126之間可打印字符1.2量詞量詞也被稱為限定符,用于指定字符必須出現(xiàn)的次數(shù)字符含義*重復(fù)任意次(包括零次)+重復(fù)一次或多次?重復(fù)零次或一次{n}重復(fù)n次,其中n上一個非負整數(shù){n,}重復(fù)至少n次,其中n是一個非負整數(shù){n,m}重復(fù)至少n次到m次,其中m和n均為非負整數(shù)并且m大于n1.3POSIX正則表達式函數(shù)ereg()函數(shù)可以在字符串中查找與指定正則表達式模式匹配的子串<?php$string="12dss3ddfa45";$pattern="[[:alpha:]]";if(ereg($pattern,$string)){ echo"字符串中至少含有一個字母字符";}else{ echo"字符串中不包含字母字符";}?>示例1.1.phpPOSIX正則表達式函數(shù)split()函數(shù)使用正則表達式把字符串拆分為較小的塊,并作為一個數(shù)組返回……$part1=split($pattern,$string,$limit);$part2=split($pattern,$string);echo"<pre>";print_r($part1);……示例1.2.phpPOSIX正則表達式ereg_replace()函數(shù)用來查找和替換子字符串。與字符串處理函數(shù)str_replace()實現(xiàn)的功能相同<?php$string="社會猶如一條船,每個人都要有掌舵的思想。";$pattern="思想";$replacement="準(zhǔn)備";echoereg_replace($pattern,$replacement,$string);?>示例1.3.php2.Perl正則表達式說明Perl正則表達式英文名稱為PerlCompatibleRegularExpression,縮寫為PCRE。PCRE庫包括一套執(zhí)行常用表達模式的函數(shù),語法來源于Perl語言。與POSIX正則表達式不同,Perl正則表達式需要以分隔符作為開始和結(jié)束標(biāo)識。Perl正則表達式通常使用正斜杠“/”作為定界符“/wh/”3.2Perl修飾符在Perl正則表達式的最后一個分隔符后,可以添加Perl修飾符來更改正則表達式的行為修飾符說明i忽略大小寫m除了匹配字符串的開始和結(jié)尾還匹配其中的換行符的之后或之前s模式中的圓點元字符“.”匹配所有的字符x表達式中的空白字符將會被忽略,除非它已經(jīng)被轉(zhuǎn)義D模式中的美元元字符僅匹配目標(biāo)字符串的結(jié)尾U和問號的作用相似2.2元字符元
字
符含
義\A匹配字符串的開頭\B匹配除單詞邊界之外的任意字符\b匹配單詞邊界\D匹配非數(shù)字字符\d匹配數(shù)字字符,等價于[0-9]\S匹配非空白字符\s匹配空白字符\W匹配任意字母和數(shù)字\w匹配任意非單詞字符[]匹配指定范圍內(nèi)的其中一個字符2.2元字符元
字
符含
義[]匹配指定范圍內(nèi)的其中一個字符()用于將正則表達式和元字符或表達式進行組合$匹配字符串的結(jié)束^匹配字符串的開始.匹配除換行之外的任何一個字符{x}重復(fù)x次{x,y}至少重復(fù)x次,最多重復(fù)y次{x,}至少重復(fù)x次*重復(fù)0次或更多次?重復(fù)0次或1次+重復(fù)1次或多次|匹配其中任意一個\轉(zhuǎn)義字符2.3正則表達式函數(shù)正則表達式函數(shù)(Perl風(fēng)格)PHP為使用Perl兼容的正則表達式提供了7個常用的函數(shù),包括:preg_grep()、preg_match()、preg_match_all()、preg_quote()、preg_replace()、preg_replace_callback()和preg_split()。利用這些函數(shù)可以方便地實現(xiàn)對字符串的搜索與替換、分割與合并正則表達式函數(shù)preg_grep()函數(shù)按指定的正則表達式搜索和匹配。其對一個數(shù)組進行匹配和搜索,搜索成功則返回匹配的數(shù)組元素<?php$input=array("東方不敗","張無忌","西方不敗","獨孤求敗","張三豐","武則天","信春哥得永生");$arr1=preg_grep("/張/",$input);$arr2=preg_grep("/敗/",$input);$arr3=preg_grep("/敗/",$input,PREG_GREP_INVERT);echo"<pre>";print_r($arr1);print_r($arr2);print_r($arr3);echo"</pre>";?>示例2.1.php正則表達式函數(shù)preg_match()函數(shù)按指定的正則表達式搜索和匹配一次<?php$subject="熱愛社會主義新中國!";preg_match("/社會/",$subject,$arr,PREG_OFFSET_CAPTURE);echo"<pre>";print_r($arr);echo"</pre>";?>示例2.2.php正則表達式函數(shù)preg_split()函數(shù)將字符串按指定的規(guī)則進行分割,用法和split()方法非常相似,只是函數(shù)preg_split()只是使用正則表達式<?php$subject="123灰太狼4523紅太郎22喜羊羊55懶羊羊78沸羊羊3234";$pattern="/[0-9]{1,}/";$arr1=preg_split($pattern,$subject);echo"<pre>";print_r($arr1);echo"</pre>";?>示例2.3.php3.正則表達式的深入分析分析示例3.1.php正則表達式是萬能的么?什么時候不適宜使用正則表達式?4.錯誤和異常處理在項目開發(fā)過程中,錯誤和異常是不可避免的,也是PHP程序員不希望發(fā)生的。為了盡可能多地避免類似情況,所以程序員必備的能力之一就是如何有效地調(diào)試錯誤并修改錯誤。PHP中提供了許多有效方法來處理錯誤和異常,如錯誤級別控制、錯誤顯示控制和自定義錯誤等。不僅如此,在PHP5中還針對類特別地引入了異常處理機制,增強了PHP的錯誤調(diào)試功能4.1常見的基本錯誤類型語法錯誤邏輯錯誤定義錯誤環(huán)境錯誤運行錯誤常見的基本錯誤類型分為:4.2PHP的錯誤級別錯誤級別控制通過php.ini文件中的“error_reporting”配置選項進行配置名稱含義E_ERROR致命的運行錯誤,中斷程序的執(zhí)行E_WARNING運行警告,不中斷程序的執(zhí)行E_PARSE編譯錯誤,PHP強制中止執(zhí)行操作E_STRICTPHP版本可移植性建議E_NOTICE錯誤警告,默認(rèn)情況下不輸出主意信息E_CORE_ERROR內(nèi)部錯誤,擴展啟動失敗導(dǎo)致的,會導(dǎo)致PHP運行退出。E_CORE_WARNING有PHP的核心產(chǎn)生,通常是由一個PHP擴展加載時失敗引發(fā)。PHP引擎將終止運行4.2PHP的錯誤級別錯誤級別控制通過php.ini文件中的“error_reporting”配置選項進行配置名稱含義E_COMPILE_ERROR編譯錯誤,與E_PARSE不同,這個錯誤會導(dǎo)致PHP運行退出。E_COMPILE_WARNINGPHP編譯時產(chǎn)生,提示用戶在使用一些過時的語法。E_USER_ERROR用戶定義錯誤導(dǎo)致PHP退出執(zhí)行。用戶定義錯誤(E_USER_*)不是來自PHP本身,而是包含在腳本中。E_USER_WARNING用戶定義的警告信息??捎糜谀_本可能發(fā)生錯誤的信號。E_USER_NOTICE用戶定義的通告可以用來在腳本中可能存在錯誤。E_ALL報告所有的錯誤和警告,包括上面所有的錯誤PHP的錯誤級別ini_set()函數(shù)控制PHP錯誤異常報告的設(shè)置是“display_errors”。當(dāng)PHP環(huán)境中已經(jīng)關(guān)閉了錯誤報告(display_errors=off)、在維護過程中又要立刻顯示程序錯誤的時候,就需要用到“ini_set()”方法ini_set("display_errors","off");//報錯關(guān)閉ini_set("display_errors","on");//報錯開啟4.3錯誤處理函數(shù)正則表達式函數(shù)當(dāng)程序出現(xiàn)錯誤或者用戶操作不當(dāng)時,我們可以使用trigger_error()函數(shù)來觸發(fā)自己定義的錯誤信息<?php$a=5;$b=0;if($b!=0){ return$a/$b;}else{ trigger_error("除數(shù)不能為零!",E_USER_NOTICE);}?>示例4.1.php4.4自定義錯誤頁面自定義錯誤頁面的使用當(dāng)程序出現(xiàn)錯誤或者用戶操作不當(dāng)時,我們可以使用trigger_error()函數(shù)來觸發(fā)自定義的錯誤信息……}else{ header("Location:error.php"); exit();}……示例4.2.php……<divstyle="margin:70pxauto;width:380px;line-height:50px;border:1pxsolid#000099;text-align:center;font-size:12px;">友情提示:您訪問的頁面有錯或不存在!!</div>……4.5異常處理拋出和捕獲異常開始異常檢測開始是否拋出異常異常處理異常處理異常檢測結(jié)束其他代碼結(jié)束4.6PHP的基本異常類異常處理PHP的異常類示例4.4.php<?phptry{ $a=5; $b=0; if($b==0){ $errmsg="除數(shù)不能為零!"; thrownewException($errmsg); }else{ echo$a/$b; }}catch(Exception$e){ echo"出錯原因:".$e->getMessage()."<br/>"; echo"錯誤文件路徑:".$e->getFile()."<br/>"; echo"錯誤代碼
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 品牌合作協(xié)議合同范例
- 勞動意外安全合同范例
- 無控交叉口優(yōu)化課程設(shè)計
- 整形外科基礎(chǔ)課程設(shè)計
- 屋頂光伏發(fā)電課程設(shè)計
- 2024年中國發(fā)動機缸體去毛刺機床市場調(diào)查研究報告
- 公司資金拆借合同范例
- 超市酒吧租賃合同范例
- 供熱課程設(shè)計的模板
- 2024至2030年中國門內(nèi)護板行業(yè)投資前景及策略咨詢研究報告
- 《測繪工程產(chǎn)品價格》和《測繪工程產(chǎn)品困難類別細則》
- 生產(chǎn)現(xiàn)場定置管理規(guī)定區(qū)域劃分、標(biāo)識牌、工具擺放標(biāo)準(zhǔn)
- 接口類驗收報告
- 關(guān)于公寓物業(yè)管理實施方案
- 母嬰保健技術(shù)資格證考試試題及答案
- 《好天氣和壞天氣》課件
- (交通運輸)鐵路軍事運輸教案
- 四年級勞動教育-種植方案(課件)
- 課件我的文化班
- 隧道支護安全技術(shù)交底書
- GB∕T 22063-2018 顯微鏡 C型接口
評論
0/150
提交評論