




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基础篇在Web编程中,经常需要对字符串进行处理和分析。正确使用和掌握字符串相关操作,能在开发过程中节约大量时间,有效提高开发效率。正则表达式是一种对字符串进行模式匹配和替换的规则,在字符串处理中起着非常重要的作用。本章便来学习字符串操作和正则表达式的相关知识。2学习目标5.1认识字符串5.2字符串常用操作5.3正则表达式本章实训本章总结3
了解字符串的组成和表示形式
掌握字符串常用操作
了解正则表达式的作用和语法规则
掌握Perl兼容正则表达式函数的应用4学习目标5.1认识字符串5.2字符串常用操作5.3正则表达式本章实训本章总结55.1认识字符串前面在2.2节介绍数据类型时,曾简单介绍过字符串,此处将详细介绍字符串的相关操作。65.1认识字符串字符串简介字符串表示形式77定义和调用函数字符串是由数字、字母、下划线等组成的一串字符。此处所说的字符主要包括以下几种类型:
数字字符,如1,2,3等。字母字符,如a,b,c等。特殊字符,如$,#,!,@等。转义字符,如\n(换行符)、\r(回车符)、\t(Tab字符)等。其中转义字符在输出时不显示,只能看到其所产生的格式化效果。8定义和调用函数(实例位置:素材与实例\example\ph05\01)【例5-1】格式化输出字符串。实例代码如下:<?phpecho"ThisisaCharacterstring:\rabc_@123";?>9定义和调用函数运行结果如图5-1所示。本实例的换行效果在浏览器中不可见,需要查看源文件来查看转义字符的输出结果。在浏览界面单击鼠标右键,在弹出的快捷菜单中选择“查看源”示。图5-1格式化输出字符串,格式如图5-2所图5-2查看源文件10字符串表示形式通过前面2.2.1节的介绍,我们知道,字符串可以使用)、双引号(”)和定界符3种形式来表示:单引号(’(<<<)。此处要强调的一点是:在使用过程中一定要注意单引号与双引号的差异,任何变量在双引号中都会被转换为它的值进行输出显示;而单引号的内容则会被原样输出。具体可以参考【例2-3】的输出结果。11学习目标5.1认识字符串5.2字符串常用操作5.3正则表达式本章实训本章总结125.2字符串常用操作135.2字符串常用操作获取字符串长度去除字符串的首尾空格和特殊字符大小写转换截取字符串查找字符串替换字符串1414获取字符串长度PHP中使用strlen()函数获取字符串长度,其语法格式如下:intstrlen(string$str)(实例位置:素材与实例\example\ph05\02)【例5-2】获取字符串长度。实例代码如下:<?phpechostrlen("ThisisaCharacterstring:\rabc_@123");?>15获取字符串长度运行结果如图5-3所示。图5-3获取字符串长度16获取字符串长度知识库汉字占两个字符,数字、英文、小数点、下划线和空格各占一个字符。实际的网页制作中,常用strlen()函数获取并检测字符串长度。比如在用户注册时,可以用其检测用户输入密码的长度,如果长度小于6,则弹出提示信息,要求重新输入。17去除字符串的首尾空格和特殊字符用户在浏览器中输入数据时,往往会在无意中输入多余的空格,而在某些情况下,字符串中又不允许出现空格和特殊字符,此时就需要去除这些多余的空格和特殊字符。为此PHP提供了trim()、rtrim()和ltrim()函数,分别用于去除字符串两端空格、字符串尾部空格和字符串首部空格。18去除字符串的首尾空格和特殊字符1去除字符串首尾空格——trim()函数trim()函数用于去除字符串首尾空格和特殊字符,并返回去掉空格和特殊字符后的字符串。其语法格式如下:stringtrim(string$str[,string$charlist="\t\n\r\0\x0B"]);其中的参数str是要去掉空格的字符串;可选参数charlist为准备从字符串str中移除的字符,如果不设置该参数,则默认去除以下字符。
“”:空格(ASCII32(0×20))。“\t”:tab,制表符(ASCII9(0×09))。“\n”:换行符(ASCII10(0×0A))。“\0”:空字符(ASCII0(0×00))。“\r”:回车符(ASCII13(0×0D))。“\x0B”:垂直制表符(ASCII11(0×0B))。19去除字符串的首尾空格和特殊字符2去除字符串右边空格——rtrim()函数rtrim()函数用于去除字符串右边的空格和特殊字符。其语法格式如下:stringtrim(string$str[,string$charlist="\t\n\r\0\x0B"]);3去除字符串左边空格——ltrim()函数ltrim()函数用于去除字符串左边的空格和特殊字符。其语法格式如下:stringltrim(string$str[,string$charlist]);20去除字符串的首尾空格和特殊字符(实例位置:素材与实例\example\ph05\03)【例5-3】去除字符串空格。实例代码如下:<?php$str="Helloecho$str."<br>";echotrim($str,"Hed!")."<br>";echortrim($str,"ld!")."<br>";echoltrim($str,"He")."<br>";?>World!";21去除字符串的首尾空格和特殊字符运行结果如图5-4所示。图5-4去除字符串空格22大小写转换在字符串操作过程中,通常需要对其大小写进行转换,此时可以使用大小写转换函数。常见大小写转换函数及其语法格式如下:stringstrtolower(stringstr);stringstrtoupper(stringstr);stringucfirst(stringstr);stringucwords(stringstr);//转换为小写//转换为大写//整个字符串首字母大写//整个字符串中以空格为分隔符的单词首字母大写23大小写转换(实例位置:素材与实例\example\ph05\04)【例5-4】大小写转换。实例代码如下:<?php$str="IwantToFLY";echostrtolower($str)."<br>";echostrtoupper($str)."<br>";echoucfirst($str)."<br>";echoucwords($str)."<br>";//定义字符串类型的变量//输出转换为小写的字符串//输出转换为大写的字符串//输出转换为首字母大写的字符串//输出转换为单词首字母//大写的字符串//输出原字符串echo$str;?>24大小写转换运行结果如图5-5所示。图5-5大小写转换25截取字符串在PHP中,如果要截取某个字符串中指定长度的字符,可以使用substr()函数来实现。其语法格式如下:stringsubstr(string$string,int$start[,int$length])
参数string为要操作的字符串。参数start为要截取的字符串的开始位置,若start为负数时,则表示从倒数第start开始截取length个字符;若start为0,则表示从字符串的第1个字符开始。可选参数length为要截取的字符串长度,若在使用时不指定该参数,则默认截取到字符串结尾。若length为负数,则表示从start开始向右截取到末尾倒数第length个字符的位置。
26截取字符串(实例位置:素材与实例\example\ph05\05)【例5-5】字符串截取。实例代码如下:<?php$str="Thisisaverybeautifulbox.";echo"原字符串:$str<br>";echo"截取字符串:".substr($str,8)."<br>";echo"截取字符串:".substr($str,8,6)."<br>";echo"截取字符串:".substr($str,-4)."<br>";echo"截取字符串:".substr($str,-19,-4)."<br>";?>27截取字符串运行结果如图5-6所示。图5-6字符串截取28查找字符串在PHP中,如果需要对字符串进行查找和检索操作,可以使用strstr()和strpos()函数。1strstr()函数strstr()函数用于搜索指定字符串在另一个字符串中的第一次出现,其语法格式如下:stringstrstr(string$haystack,mixed$needle)参数haystack为被搜索的字符串,参数知识库needle为要搜索的字符串(指定字符串)。该函数返回自匹配点开始至被搜索字符串结尾的部分。如果未找到所搜索的字符串,则返回false。可以使用该函数获取上传图片的后缀,来限制上传图片的格式。29查找字符串2strpos()函数strpos()函数用于检索字符串内指定的字符或文本。其语法格式如下:mixedstrpos(string$haystack,mixed$needle[,int$start])该函数将返回needle存在于haystack字符串中起始的字符位置(字符串位置从0开始,不是从1)。如果未找到匹配,则将返回false。可选参数start为开始搜索的位置。30查找字符串(实例位置:素材与实例\example\ph05\06)【例5-6】查找字符串。实例代码如下:<?php$str="IloveBeijingTiananmen!";echo"原字符串为:$str<br>";echostrstr($str,"Beijing")."<br>";echo"<hr>";echostrpos($str,"Beijing")."<br>";?>31查找字符串运行结果如图5-7所示。图5-7查找字符串32替换字符串在PHP中,要对某字符串中的指定字符进行替换,可以使用字符串替换函数str_replace()来实现。其语法格式如下:mixedstr_replace(mixed$find,mixed$replace,mixed$subject[,int&$count])参数find为要查找的字符串,参数replace为用来替换的字符串,参数subject为被搜索的字符串,可选参数count为执行替换的数量。33替换字符串(实例位置:素材与实例\example\ph05\07)【例5-7】替换字符串。实例代码如下:<?php$str="BJJQE/";echo"原字符串为:$str<br>";echo"替换字符串后:".str_replace('BJJQE','北京金企鹅',$str);?>34替换字符串运行结果如图5-8所示。图5-8替换字符串35替换字符串该函数必须遵循以下规则:
如果搜索的字符串是数组,那么它将返回数组。如果搜索的字符串是数组,那么它将对数组中的每个元素进行查找和替换。如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换。如果查找的是数组,而替换的是字符串,那么替换字符串将对所有查找到的值起作用。
36返回整个模式匹配的次数(可能为零),出错则返回false。Perl兼容正则表达式函数汉字占两个字符,数字、英文、小式,还可以用给出的实例字符串或文件快速地进行测试匹txt”即可理解为一个简单的正则表达式。//定义字符串类型的变量正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字3种形式来表示:单引号(’(实例位置:素材与实例\example\ph05\10)var_dump($match2);参数start为要截取的字符串的开始位置,若start为负数时,则表示从倒“<body>”标签中输入Perl兼容正则表达式函数substr($str,-19,-4).echo"原字符串为:$str<br>";学习目标5.1认识字符串5.2字符串常用操作5.3正则表达式本章实训本章总结375.3正则表达式385.3正则表达式正则表达式简介正则表达式的语法规则Perl兼容正则表达式函数测试正则表达式3939正则表达式简介正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符,及这些特定字符的组合,组成一个“规则字符串”,该“规则字符串”描述在查找文字主体时待匹配的一个或多个字符串。可以说,正则表达式是作为一个模板,将某个字符模式与所搜索的字符串进行匹配。40正则表达式简介接触过DOS的用户可能知道,如果想要匹配当前文件夹下所有的文本文件,可以输入“dir*.txt”命令,按【Enter】键后所有“.txt”文件都会被列出来。此处的“*.txt”即可理解为一个简单的正则表达式。在PHP中,正则表达式基本上有以下3个作用:
判断给定字符串是否匹配正则表达式。用新文本替换匹配文本。将一个字符串拆分为一组更小的信息块,从字符串中获取其特定部分。41正则表达式的语法规则正则表达式由一些普通字符和一些元字符(特殊字符)以及模式修正符组成。普通字符包括大小写的字母、数字、标点符号、非打印字符(如换行符、回车符等)以及双引号、单引号等符号;而元字符则是一些具有特殊含义的符号,如“*”“?”等。在最简单的情况下,一个正则表达式看上去就是一个普通的字符串。例如,正则表达式“testing”中没有包含任何元字符,它可以匹配“testing”和“testing123”等字符串,但是不能匹配“Testing”。42正则表达式的语法规则1元字符元字符是指在正则表达式中具有特殊意义的字符。要想真正用好正则表达式,必须正确理解元字符的应用。表5-1列出了常用元字符及对其的简单描述。(见书相应位置所示)提示只有连字符在字符组内部,并且出现在两个字符之间时,才能表示字符的范围;如果出现在字符组的开头,则只能表示连字符本身。43正则表达式的语法规则表5-2给出了反斜杠指定的预定义字符集。表5-2反斜杠指定的预定义字符集预定义字符集说明\d\D匹配一个数字字符,等价于[0-9]匹配一个非数字字符,等价于[^0-9]匹配任何不可见字符,包括空格、制表符、换行符等,等价\s于[\f\n\r\t\v]\S匹配任何可见字符,等价于[^\f\n\r\t\v]匹配包括下划线的任何单词字符,类似但不等价于“[A-Za-z0-\w9_]”\W匹配任何非单词字符,等价于“[^A-Za-z0-9_]”44正则表达式的语法规则2模式修正符模式修正符的作用是规定正则表达式该如何解释和应用,PHP中的常用模式修正符如表5-3所示。表5-3PHP中的常用模式修正符修正符说明i忽略大小写模式多行匹配。仅当表达式中出现“^”“$”中的至少一个元字符且字符串m有换行符时,“m”修饰符才起作用。“m”修饰符可以改变“^”为表示每一行的头部s改变元字符“.”的含义,使其可以代表所有字符(包括换行符),其他模式不能匹配换行符x忽略空白字符45Perl兼容正则表达式函数“Perl兼容正则表达式(PerlCompatibleRegularExpression)”简称PCRE,也有称其为“PCRE兼容正则表达式”。Perl是一种编程语言,其字符处理功能非常强大,此处的PCRE就是使用了Perl的正则函数库。在PCRE中,表达式应被包含在定界符中,一般是斜线“/”。实现PCRE风格正则表达式的函数有7个,下面分别介绍。46Perl兼容正则表达式函数1preg_grep()函数函数语法格式如下:arraypreg_grep(string$pattern,array$input)函数preg_grep()返回一个数组,其中包括$input数组中与给定的$pattern模式相匹配的元素。对于数组$input中的每个元素,preg_grep()只进行一次匹配。47Perl兼容正则表达式函数(实例位置:素材与实例\example\ph05\08)【例5-8】preg_grep()函数的应用。实例代码如下:<?php$subjects=array("MechanicalEngineering","Medicine","SocialScience","Agriculture","CommercialScience","Politics");//匹配所有仅由一个单词组成的科目名$alonewords=preg_grep("/^[a-z]*$/i",$subjects);var_dump($alonewords);?>48Perl兼容正则表达式函数运行结果如图5-9所示。图5-9preg_grep()函数的应用49Perl兼容正则表达式函数2preg_match()和preg_match_all()函数preg_match()函数用于匹配字符串。其语法格式如下:intpreg_match(string$pattern,string$subject[,array&$matches])该函数在字符串subject中搜索与表达式pattern相匹配的内容,成功则返回整个模式匹配的次数(可能为零),出错则返回false。如果定义了数组matches,则将每次匹配的结果存储到该数组中。preg_match()第一次匹配成功后就会停止匹配,如果要实现全部结果的匹配,即搜索到subject结尾处,则需使用preg_match_all()函数。50Perl兼容正则表达式函数(实例位置:素材与实例\example\ph05\09)【例5-9】使用preg_match()和preg_match_all()函数匹配字符串。实例代码如下:<?php$str="php功能强大,学习php是一件快乐的事。";$preg="/[x80-xff]+/";$a=preg_match($preg,$str,$match1);echo$a."<br>";var_dump($match1);$b=preg_match_all($preg,$str,$match2);echo"<p>".$b."<br>";var_dump($match2);?>51Perl兼容正则表达式函数运行结果如图5-10所示。图5-10使用preg_match()和preg_match_all()函数52Perl兼容正则表达式函数3preg_quote()函数该函数可以对特殊字符进行自动转义,其语法格式如下:stringpreg_quote(string$str[,string$delimiter])该函数给字符串str中的所有特殊字符前面加上一个反斜线,对其进行自动转义。如果定义了参数delimiter,则该参数所包含的字符串也将被转义,函数返回转义后的字符串。提示正则表达式的特殊字符包括:.\\+*?[^]$(){}=!<>|:。53Perl兼容正则表达式函数(实例位置:素材与实例\example\ph05\10)【例5-10】对字符串进行自动转义。实例代码如下:<?php$k1="$40forag3/400";$k2=preg_quote($k1,"/");echo"原字符串:".$k1."<br>";echo"转义字符串:".$k2;?>54Perl兼容正则表达式函数运行结果如图5-11所示。图5-11将字符串自动转义55Perl兼容正则表达式函数4preg_replace()函数preg_replace()函数用于正则表达式的搜索和替换,其语法格式如下:mixedpreg_replace(mixed$pattern,mixed$replacement,mixed$subject[,int$limit])该函数在字符串subject中匹配表达式pattern,并将匹配项替换成字符串replacement。如果定义了参数limit,则替换limit次。上述参数除limit外都可以是一个数组。如果pattern和replacement都是数组,将以其键名在数组中出现的顺序来进行处理,这不一定和索引的数字顺序相同。如果使用索引来标识哪个pattern将被哪个replacement替换,应该在调用preg_replace()之前用ksort()函数对数组进行排序。56Perl兼容正则表达式函数(实例位置:素材与实例\example\ph05\11)【例5-11】替换字符串。实例代码如下:<?php$k1="Thequickbrownfoxjumpedoverthelazydog.";//定义变量//定义变量,$k2=preg_replace('/\s/','-',$k1);//并将替换后的字符串赋给它echo"原字符串:".$k1."<br>";echo"替换空格后的字符串:".$k2;?>//输出字符串变量$k1//输出字符串变量$k257Perl兼容正则表达式函数运行结果如图5-12所示。图5-12替换字符串58Perl兼容正则表达式函数5preg_split()函数preg_split()函数用于分割字符串,其语法格式如下:arraypreg_split(string$pattern,string$subject[,int$limit[,int$flags]])该函数返回一个数组,包含字符串subject经正则表达式pattern作为边界所分割出的子串。如果定义了参数limit,则最多返回limit个子串,如果limit是-1,则意味着没有限制,可以用来继续指定可选参数flags。59Perl兼容正则表达式函数(实例位置:素材与实例\example\ph05\12)【例5-12】分割字符串。实例代码如下:<?php$str="phpmysql,apacheajax";$keywords=preg_split("/[\s,]+/",$str);//定义字符串变量//定义变量,//并将分割后的字符串赋给它print_r($keywords);?>//输出分割后的字符串组成的数组60Perl兼容正则表达式函数运行结果如图5-13所示。图5-13分割字符串61测试正则表达式正则表达式的语法很难理解,且容易出错,即便是对经常使用的人来说也是如此。这就需要有一种工具来对其进行测试。RegexBuddy正好满足了这个需要。它可以容易地建立正确的正则表达式,清晰地推断复杂的正则表达式,还可以用给出的实例字符串或文件快速地进行测试匹配,从而有效避免在实际应用中出现错误。62测试正则表达式可以在网上下载RegexBuddy软件,其安装比较简单,此处不再赘述。启动RegexBuddy后,默认顶部显示正则表达式和前一次使用的历史,底部显示其他选项卡,分别是“Create”“Convert”“Test”“Debug”“Use”“Library”“GREP”和“Forum”,如图5-14所示。图5-14RegexBuddy默认界面63测试正则表达式为便于使用,可以单击窗口右上方工具栏上的“View”按钮“SidebySideLayout”,这样可以最大限度地同时查看两个窗口,如图5-15所示。,在其下拉菜单中选择图5-15切换窗口显示方式64测试正则表达式接下来用RegexBuddy建立一个简单的正则表达式。在左上方的正则表达式区域输入“^[0-9]*$”有数字的正则表达式,然后在“Test”9065265hgf、56464(每输入一个换一行),并在“Test”区域左上角的下拉列表中选择“Linebyline”,如图5-16所示。正则表达式区域历史记录,也就是只允许区域输入测试文本:“Test”区域、hhh、45002、相关面板区域输出结果图5-16测试正则表达式65学习目标5.1认识字符串5.2字符串常用操作5.3正则表达式本章实训本章总结66--验证上传图片的格式(实例位置:素材与实例\exercise\ph05\01)一般在网站上传图片时,对其格式是有一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度银行保险公司养老金融服务合作协议
- 退队仪式发言稿
- 2025年攀枝花货运模拟考试
- 周年庆发言稿
- 2025年宿迁运输从业资格证考试技巧
- 2025年萍乡货运考试
- 高性能计算资源优化技术手册
- 别墅包工建设合同
- 专业临时工聘用协议书
- 农业生产技术服务协议
- 信用修复申请文书(当事人适用)
- 导管滑脱应急预案演练住院患者导尿管道滑脱
- 2023年新改版教科版六年级下册科学全册教案(新课标)
- 03SG520-2 实腹式钢吊车梁(中轻级工作制 A1~A5 Q345钢 跨度6m,7.5m,9m)
- 高质量C+ + C 编程指南
- Access数据库程序设计上机操作练习题2
- 《最优化方法》复习题(含答案)
- GB/T 4506-1984针尖锋利度和强度试验方法
- GB 2759-2015食品安全国家标准冷冻饮品和制作料
- 输变电工程结构工艺标准库
- 税收风险管理课件
评论
0/150
提交评论