第4章 正则表达式和异常处理(理论)_第1页
第4章 正则表达式和异常处理(理论)_第2页
第4章 正则表达式和异常处理(理论)_第3页
第4章 正则表达式和异常处理(理论)_第4页
第4章 正则表达式和异常处理(理论)_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HCCE2010课程体系介绍第4章正则表达式和异常处理前言PHP数组、字符串以及相应的常用函数PHP的面向对象本章内容POSIX正则表达式Perl正则表达式异常处理本章目标熟练使用PHP正则表达式能够处理各种异常1.POSIX正则表达式

POSIX风格的正则表达式由正则字符和元字符构成,二者联合构成了一个文本模式的程序描述。因此正则表达式允许对文本内的模式和子模式进行匹配字

符含

义()将不同的字符串组成一组,也称为子模式[]定义字符集合{}指定重复次数^在字符串的开始匹配或者表示不在某个字符串集合内$在字符串的结尾匹配.匹配除换行符(\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库包括一套执行常用表达模式的函数,语法来源于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()函数将字符串按指定的规则进行分割,用法和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.错误和异常处理在项目开发过程中,错误和异常是不可避免的,也是PHP程序员不希望发生的。为了尽可能多地避免类似情况,所以程序员必备的能力之一就是如何有效地调试错误并修改错误。PHP中提供了许多有效方法来处理错误和异常,如错误级别控制、错误显示控制和自定义错误等。不仅如此,在PHP5中还针对类特别地引入了异常处理机制,增强了PHP的错误调试功能4.1常见的基本错误类型语法错误逻辑错误定义错误环境错误运行错误常见的基本错误类型分为:4.2PHP的错误级别错误级别控制通过php.ini文件中的“error_reporting”配置选项进行配置名称含义E_ERROR致命的运行错误,中断程序的执行E_WARNING运行警告,不中断程序的执行E_PARSE编译错误,PHP强制中止执行操作E_STRICTPHP版本可移植性建议E_NOTICE错误警告,默认情况下不输出主意信息E_CORE_ERROR内部错误,扩展启动失败导致的,会导致PHP运行退出。E_CORE_WARNING有PHP的核心产生,通常是由一个PHP扩展加载时失败引发。PHP引擎将终止运行4.2PHP的错误级别错误级别控制通过php.ini文件中的“error_reporting”配置选项进行配置名称含义E_COMPILE_ERROR编译错误,与E_PARSE不同,这个错误会导致PHP运行退出。E_COMPILE_WARNINGPHP编译时产生,提示用户在使用一些过时的语法。E_USER_ERROR用户定义错误导致PHP退出执行。用户定义错误(E_USER_*)不是来自PHP本身,而是包含在脚本中。E_USER_WARNING用户定义的警告信息。可用于脚本可能发生错误的信号。E_USER_NOTICE用户定义的通告可以用来在脚本中可能存在错误。E_ALL报告所有的错误和警告,包括上面所有的错误PHP的错误级别ini_set()函数控制PHP错误异常报告的设置是“display_errors”。当PHP环境中已经关闭了错误报告(display_errors=off)、在维护过程中又要立刻显示程序错误的时候,就需要用到“ini_set()”方法ini_set("display_errors","off");//报错关闭ini_set("display_errors","on");//报错开启4.3错误处理函数正则表达式函数当程序出现错误或者用户操作不当时,我们可以使用trigger_error()函数来触发自己定义的错误信息<?php$a=5;$b=0;if($b!=0){ return$a/$b;}else{ trigger_error("除数不能为零!",E_USER_NOTICE);}?>示例4.1.php4.4自定义错误页面自定义错误页面的使用当程序出现错误或者用户操作不当时,我们可以使用trigger_error()函数来触发自定义的错误信息……}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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论