版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第8章正那么表达式正那么表达式应用范围很广泛,不仅PHP脚本支持正那么表达式,类似JavaScript这类的客户端脚本,也提供了对正规表示式的支持。正那么表达式是一种用于模式匹配和替换的表达式,主要用于复杂的字符串操作。本章主要介绍PHP中,关于正那么表达式的函数,以及其在实际应用中的例子。18.1POSIX扩展正那么表达式函数在PHP中,关于正那么表达式的函数不多,但是足以满足对复杂字符串操作的需要。本节主要介绍正那么表达式的根底知识和相关函数使用方法。28.1.1正那么表达式根底在介绍正那么表达式之前,先对正那么表达式的语法做一下了解。不同的脚本语言,正那么表达式的表示方法略有不同,本小节以PHP作为标准。首选正那么表达式是一个字符串,在这个字符串内,可以设定一些规那么,当正那么表达式函数使用这些规那么时,就可以根据已经设定好的内容,对指定的字符串进行替换或匹配的操作。作为进一步的了解,下面列出几个简单的正那么表达式。"\d{6}":表示一个由6位数字组成的字符串。"[A-Za-z0-9]":匹配所有大写字母、小写字母及0到9的数字。"^open":表示以open开始的字符串。"something$":表示以something结尾的字符串。"^[a-zA-Z]":表示一个以字母开头的字符串。"go{2}":表示字母g后面跟着2个o即:goo。38.1.2正那么表达式替换ereg_replace()与str_replace()函数一样,都可以把字符串中查找到的子字符串,替换为指定的字符串,而ereg_replace()函数,还可以使用正那么表达式来查找和替换,实现更复杂的字符串操作。下面演示ereg_replace()函数的使用方法,代码如清单所示。清单ereg_replace()函数的使用方法<?php//简单的替换$year="2021";$string="北京将于二零零八年举办奥运会";//使用ereg_replace()函数替换字符串echoereg_replace("二零零八",$year,$string)."<br/>";echoereg_replace("()二零零八","\\12021",$string)."<br/>";echoereg_replace("(()二零零八)","\\22021",$string)."<br/>";echoereg_replace("((())二零零八)","\\32021",$string)."<br/>";//以下情况是非法的echoereg_replace("((())二零零八)","\\42021",$string)."<br/>";//参数2中指定的子字符串数大小括号的嵌套数?>48.1.3正那么表达式匹配使用ereg()函数,可以查找字符串与子字符串匹配的情况,并返回匹配字符的长度,还可以借助参数把返回匹配字符的数组。下面演示ereg函数的使用方法,代码如清单所示。58.1.4不区分大小写的正那么表达式替换eregi_replace()与ereg_replace()一样,都可用于正那么表达式的替换,唯一的区别在于,eregi_replace()函数会忽略要操作字符串中字母的大小写。下面演示eregi_replace()函数的使用方法,代码如清单所示。清单eregi_replace()函数的使用方法<?php//定义一个包含有大小写字母的字符串$string="beijing2021BeiJing";echo"使用ereg_replace()函数替换beijing字符串:<br>";$string=ereg_replace("(beijing)","<b>\\1</b>",$string);echo$string;echo"<br>";echo"<br>使用eregi_replace()函数替换beijing字符串:<br>";$string=eregi_replace("(beijing)","<b>\\1</b>",$string);echo$string;?>68.1.5不区分大小写的正那么表达式匹配eregi()与ereg()一样,都可用于正那么表达式的匹配,唯一的区别在于,eregi()函数会忽略要操作字符串中字母的大小写。下面演示eregi()函数的使用方法,代码如清单所示。清单eregi()函数的使用方法<?php//定义一个包含有大小写字母的字符串$string="AAbbBcDDeeEE";if(ereg("abcde","ABCDE",$array)){echo"<b>使用ereg()查找匹配的字符串</b><br>";print_r($array);}if(eregi("abcde","ABCDE",$array)){echo"<b>使用eregi()查找匹配的字符串</b><br>";print_r($array);}?>78.1.6使用正那么表达式分割数组使用split()函数,不仅可以完成与explode()函数同样的功能,而且还可以根据给出的正那么表达式,来分割字符串,并返回一个数组。下面演示split()函数的使用方法,88.1.7用正那么表达式不区分大小写将字符串分割到数组中spliti()与split()一样,都可以根据正那么表达式,来分割字符串,唯一的区别在于,spliti()函数会忽略要操作字符串中字母的大小写。下面演示spliti()函数的使用方法,代码如清单所示。清单spliti()函数的使用方法<?php//定义一个包含有大小写字母的字符串$string="AAbbBcDDeeEE";if(ereg("abcde","ABCDE",$array)){echo"<b>使用ereg()查找匹配的字符串</b><br>";print_r($array);}if(eregi("abcde","ABCDE",$array)){echo"<b>使用eregi()查找匹配的字符串</b><br>";print_r($array);}?>98.1.8产生不区分大小匹配的正那么表达式使用sql_regcase()函数,可以根据参数的字符串,产生一个不区分大小写的正那么表达式。这大大减少了在脚本中,建立字符匹配正那么表达式的时间。下面演示sql_regcase()函数的使用方法,代码如清单所示。108.2PERL兼容正那么表达式函数PERL兼容正那么表达式函数,使用的模式类似于Perl中的语法。其表达式应包含在定界符中,除数字、字母、反斜线外的任务字符,都可以做字界符使用,如果作为定界符的字符要出现在表达式中,可以使用反斜线进行转。118.2.1返回与模式匹配的数组单元使用preg_grep()函数,可以根据给定的字符或正那么表达式,查找指定数组,并返回与查找条件匹配的单元。下面演示preg_grep()函数的使用方法,代码如清单所示。128.2.2正那么表达式匹配使用preg_match()函数,可以查找字符串与子字符串匹配的情况,并返回匹配字符的长度,还可以借助参数把返回匹配字符的数组。下面演示preg_match()函数的使用方法,代码如清单所示。138.2.3全局正那么表达式匹配preg_match_all()函数可以在字符串中搜索,与给出的正那么表达式匹配的内容,并将结果按指定的顺序放到数组中。preg_match_all()与preg_match()函数的作用都是一样的,其区别在于,preg_match()函数在搜索到第1个字符匹配后,将停止搜索。而preg_match_all()函数在搜索到第1个匹配后,会从第1个匹配项后继续搜索,依次类推,直到搜索完整个字符串。下面演示preg_match_all()函数的使用方法,代码如清单所示。148.2.4转义正那么表达式字符当在正那么表达式中使用特列符号时,需要对这些特殊符号进行转义。使用preg_quote()函数,可以对指定的字符串的中特殊字符,自动进行转义操作,这些字符包括:“.、\、+、*、?、[、^、]、$、(、)、{、}、=、!、<、>、|、:〞。preg_quote()函数,不仅可以用于转义正那么表达式的特殊字符,也可以为字符串中的特殊字符加上反斜线。下面演示preg_quote()函数的使用方法,代码如清单所示。158.2.5正那么表达式的搜索和替换使用preg_replace()函数,可以在字符串中搜索,与正那么表达式匹配的项,并替换为一个指定的字符串。preg_replace()函数默认替换所有匹配项,也可以使用参数控制替换的匹配项。preg_replace()函数与ereg_replace()函数,实现的功能是一样的,下面特别演示preg_replace()函数将HTML转换为文本的方法,preg_replace()函数有4个参数:第1个参数是必选参数,用于指定要查找的字符或正那么表达式。第2个参数是必选参数,用于指定替换匹配项的字符串。第3个参数是必选参数,用于指定要查找的字符串。第4个参数是可选参数,当使用该参数后,preg_replace()函数会根据这个参数的值,替换个数的匹配项。168.2.6用正那么表达式分割字符串使用preg_split()函数,将返回一个数组,数组的每个单元是使用正那么表达式作为边界,分割出的子字符串。preg_split()函数还可以设定返回数组单元的个数。下面演示preg_split()函数的使用方法,代码如清单所示。178.3正那么表达式应用实例正那么表达式主要应用在复杂字符串操作中,最经常使用的是检验某类特殊字符串,如:电子邮件地址、IP地址、邮政编码等。本节将介绍正那么表达式的应用实例,并列出局部常用正那么表达式供读者参考。188.3.1正那么表达式的应用正那么表达式的应用很广泛,特别是在一些复杂字符串操作时,使用正那么表达式,将会变得非常简单。下面简单演在PHP中使用正那么表达式的方法,定义了一个用于检查电子邮件地址的函数,其核心语句是ereg()函数。电子邮件地址的命名规那么是:以字母、数字、下划线及中划线开头,后跟“@〞符号,其后跟字母、数字、下划线及中划线组成的字符串,其后跟“.〞符号,其后跟字母、数字、下划线及中划线组成的字符串,使用正那么表达式表示就是:^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+。在建立与电子邮件地址相匹配的正那么表达式后,就可以使用ereg()函数来对模式与字符串进行匹配,如果相匹配就是正确的电子邮件地址,如果不匹配就是非法邮件地址。198.3.2匹配特定数字正那么表达式可以用于数字的匹配,下面演示特定数字的正那么表达式的方法,代码如清单所示。208.3.3匹配特定字符串正那么表达式一个重要的作用就是,处理复杂的字符串,而字符串匹配,主要是针对26个英文字母来进行的。下面演示匹配特定字符串的正那么表达式,代码如清单所示。218.3.4常用正那么表达式除了用于匹配特定数字和字符外,下面列出一些常用的正那么表达式,供读者参考,演示代码如清单所示。228.4常见问题正那么表达式可以处理很复杂的字符串,但是其语法相对来说也是比较复杂,在学习正那么表达式时,注意多参考例子。由于正那么表达式函数实现的功能,有一些字符串函数也可以实现,所以在实际应用中,应该根据实际情况选择使用。238.4.1关于正那么表达式的语法在本章中,介绍了正那么表达式的相关语法,其中主要语法都可以在表8-1中查找。表8-1中的正那么表达式语法,包括了POSIX扩展与PERL兼容两种正那么表达式的语法,在使用时要注意,POSIX扩展正那么表达式函数,不支持类似的表达式:\d、\w等。可以通过一段代码,来演示两类函数正那么表达式语法的区别,代码如下所示。<?php//定义一个字符串,存储一个网址$url="://rzphp";//使用POSIX扩展正那么表达式函数把网址转化为一个连接echoereg_replace("[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]","<ahref=\"\\0\">\\0</a>",$url);//使用PERL兼容正那么表达式函数把网址转化为一个连接echopreg_replace("/[[:alpha:]]+:\/\/[^<>[:space:]]+[[:alnum:]\/]/","<ahref=\"\\0\">\\0</a>",$url);?>248.4.2关于字符串替换正那么表达式函数,如ereg_repalce()、eregi_replace()、preg_replace()函数,都可以实现字符串的替换。但并不是所有的字符串替换,都必须使用正那么表达式来完成,str_replace()在完成普通的字符串替换时,比正那么表达式有优势,只有在替换复杂的字符串时,正那么表达式才能表达出价值。在同样使用正那么表达式替
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商务工作计划3篇
- 2025年己二酸二甲酯合作协议书
- 2025年多功能水质现场监测仪项目合作计划书
- 2025年脱毛剂合作协议书
- 人教版初中化学总复习
- 吊车租赁合同范本
- 门市房租房协议
- 孵化场地出租合同范本
- 2024年酒水独家代理合同
- 2024年高科技企业研发税收优惠政策咨询顾问合同3篇
- 测控电路第7章信号细分与辨向电路
- 外研版(三起)小学英语四年级上册教案(全册)
- 小学生体育学习评价表
- 哈尔滨工业大学信纸模版
- 氨的饱和蒸汽压表
- 餐饮店应聘人员面试测评表
- 踝关节扭伤.ppt
- APQP全套表格最新版(共98页)
- 《合作意向确认函》范本
- 三年级数学上册全册练习题
- 六年级上册数学试题-天津河西区2018-2019学年度期末考试人教新课标含答案
评论
0/150
提交评论