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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

HCCE2010課程體系介紹第4章正則表達式和異常處理前言PHP數組、字符串以及相應的常用函數PHP的面向對象本章內容POSIX正則表達式Perl正則表達式異常處理本章目標熟練使用PHP正則表達式能夠處理各種異常1.POSIX正則表達式

POSIX風格的正則表達式由正則字符和元字符構成,二者聯(lián)合構成了一個文本模式的程序描述。因此正則表達式允許對文本內的模式和子模式進行匹配字

符含

義()將不同的字符串組成一組,也稱為子模式[]定義字符集合{}指定重復次數^在字符串的開始匹配或者表示不在某個字符串集合內$在字符串的結尾匹配.匹配除換行符(\n)之外的任意字符?重復零次或者一次*重復零次或者多次+重復一次或者多次\轉義字符|或者,選擇分支的標識1.1字符集和類字符集,可以匹配指定類型的任何字符

字符含義[a-z]小寫字母字符[A-Z]大寫字母字符[a-zA-Z]大小寫字母字符[0-9]數字字符[0-9\+\-\*\\]數字字符、加號、減號、乘號和除號[\f\r\n\t]空白字符字符集和類字符類,對整個字符范圍進行指定

字符類含義[[:alnum:]]字母字符和數字字符,等價于[a-zA-Z0-9][[:alpha:]]字母字符,等價于[a-zA-Z][[:upper:]]大寫字母字符,等價于[A-Z][[:lower:]]小寫字母字符,等價于[a-z][[:digit:]]數字字符,等價于[0-9][[:blank:]]空格符和制表符[[:space:]]空白字符,包括空格、水平制表符、垂直制表符、換行、換頁、回車[[:print:]]可打印字符[[:ascii:]]7位ASCII碼[[:xdigit:]]十六進制字符,等價于[a-fA-F0-9][[:punct:]]標點符號[[:graph:]]ASCII碼從33~126之間可打印字符1.2量詞量詞也被稱為限定符,用于指定字符必須出現的次數字符含義*重復任意次(包括零次)+重復一次或多次?重復零次或一次{n}重復n次,其中n上一個非負整數{n,}重復至少n次,其中n是一個非負整數{n,m}重復至少n次到m次,其中m和n均為非負整數并且m大于n1.3POSIX正則表達式函數ereg()函數可以在字符串中查找與指定正則表達式模式匹配的子串<?php$string="12dss3ddfa45";$pattern="[[:alpha:]]";if(ereg($pattern,$string)){ echo"字符串中至少含有一個字母字符";}else{ echo"字符串中不包含字母字符";}?>示例1.1.phpPOSIX正則表達式函數split()函數使用正則表達式把字符串拆分為較小的塊,并作為一個數組返回……$part1=split($pattern,$string,$limit);$part2=split($pattern,$string);echo"<pre>";print_r($part1);……示例1.2.phpPOSIX正則表達式ereg_replace()函數用來查找和替換子字符串。與字符串處理函數str_replace()實現的功能相同<?php$string="社會猶如一條船,每個人都要有掌舵的思想。";$pattern="思想";$replacement="準備";echoereg_replace($pattern,$replacement,$string);?>示例1.3.php2.Perl正則表達式說明Perl正則表達式英文名稱為PerlCompatibleRegularExpression,縮寫為PCRE。PCRE庫包括一套執(zhí)行常用表達模式的函數,語法來源于Perl語言。與POSIX正則表達式不同,Perl正則表達式需要以分隔符作為開始和結束標識。Perl正則表達式通常使用正斜杠“/”作為定界符“/wh/”3.2Perl修飾符在Perl正則表達式的最后一個分隔符后,可以添加Perl修飾符來更改正則表達式的行為修飾符說明i忽略大小寫m除了匹配字符串的開始和結尾還匹配其中的換行符的之后或之前s模式中的圓點元字符“.”匹配所有的字符x表達式中的空白字符將會被忽略,除非它已經被轉義D模式中的美元元字符僅匹配目標字符串的結尾U和問號的作用相似2.2元字符元

符含

義\A匹配字符串的開頭\B匹配除單詞邊界之外的任意字符\b匹配單詞邊界\D匹配非數字字符\d匹配數字字符,等價于[0-9]\S匹配非空白字符\s匹配空白字符\W匹配任意字母和數字\w匹配任意非單詞字符[]匹配指定范圍內的其中一個字符2.2元字符元

符含

義[]匹配指定范圍內的其中一個字符()用于將正則表達式和元字符或表達式進行組合$匹配字符串的結束^匹配字符串的開始.匹配除換行之外的任何一個字符{x}重復x次{x,y}至少重復x次,最多重復y次{x,}至少重復x次*重復0次或更多次?重復0次或1次+重復1次或多次|匹配其中任意一個\轉義字符2.3正則表達式函數正則表達式函數(Perl風格)PHP為使用Perl兼容的正則表達式提供了7個常用的函數,包括:preg_grep()、preg_match()、preg_match_all()、preg_quote()、preg_replace()、preg_replace_callback()和preg_split()。利用這些函數可以方便地實現對字符串的搜索與替換、分割與合并正則表達式函數preg_grep()函數按指定的正則表達式搜索和匹配。其對一個數組進行匹配和搜索,搜索成功則返回匹配的數組元素<?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正則表達式函數preg_match()函數按指定的正則表達式搜索和匹配一次<?php$subject="熱愛社會主義新中國!";preg_match("/社會/",$subject,$arr,PREG_OFFSET_CAPTURE);echo"<pre>";print_r($arr);echo"</pre>";?>示例2.2.php正則表達式函數preg_split()函數將字符串按指定的規(guī)則進行分割,用法和split()方法非常相似,只是函數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ā)生的。為了盡可能多地避免類似情況,所以程序員必備的能力之一就是如何有效地調試錯誤并修改錯誤。PHP中提供了許多有效方法來處理錯誤和異常,如錯誤級別控制、錯誤顯示控制和自定義錯誤等。不僅如此,在PHP5中還針對類特別地引入了異常處理機制,增強了PHP的錯誤調試功能4.1常見的基本錯誤類型語法錯誤邏輯錯誤定義錯誤環(huán)境錯誤運行錯誤常見的基本錯誤類型分為:4.2PHP的錯誤級別錯誤級別控制通過php.ini文件中的“error_reporting”配置選項進行配置名稱含義E_ERROR致命的運行錯誤,中斷程序的執(zhí)行E_WARNING運行警告,不中斷程序的執(zhí)行E_PARSE編譯錯誤,PHP強制中止執(zhí)行操作E_STRICTPHP版本可移植性建議E_NOTICE錯誤警告,默認情況下不輸出主意信息E_CORE_ERROR內部錯誤,擴展啟動失敗導致的,會導致PHP運行退出。E_CORE_WARNING有PHP的核心產生,通常是由一個PHP擴展加載時失敗引發(fā)。PHP引擎將終止運行4.2PHP的錯誤級別錯誤級別控制通過php.ini文件中的“error_reporting”配置選項進行配置名稱含義E_COMPILE_ERROR編譯錯誤,與E_PARSE不同,這個錯誤會導致PHP運行退出。E_COMPILE_WARNINGPHP編譯時產生,提示用戶在使用一些過時的語法。E_USER_ERROR用戶定義錯誤導致PHP退出執(zhí)行。用戶定義錯誤(E_USER_*)不是來自PHP本身,而是包含在腳本中。E_USER_WARNING用戶定義的警告信息??捎糜谀_本可能發(fā)生錯誤的信號。E_USER_NOTICE用戶定義的通告可以用來在腳本中可能存在錯誤。E_ALL報告所有的錯誤和警告,包括上面所有的錯誤PHP的錯誤級別ini_set()函數控制PHP錯誤異常報告的設置是“display_errors”。當PHP環(huán)境中已經關閉了錯誤報告(display_errors=off)、在維護過程中又要立刻顯示程序錯誤的時候,就需要用到“ini_set()”方法ini_set("display_errors","off");//報錯關閉ini_set("display_errors","on");//報錯開啟4.3錯誤處理函數正則表達式函數當程序出現錯誤或者用戶操作不當時,我們可以使用trigger_error()函數來觸發(fā)自己定義的錯誤信息<?php$a=5;$b=0;if($b!=0){ return$a/$b;}else{ trigger_error("除數不能為零!",E_USER_NOTICE);}?>示例4.1.php4.4自定義錯誤頁面自定義錯誤頁面的使用當程序出現錯誤或者用戶操作不當時,我們可以使用trigger_error()函數來觸發(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異常處理拋出和捕獲異常開始異常檢測開始是否拋出異常異常處理異常處理異常檢測結束其他代碼結束4.6PHP的基本異常類異常處理PHP的異常類示例4.4.php<?phptry{ $a=5; $b=0; if($b==0){ $errmsg="除數不能為零!"; 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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論