版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2
3了解字符串的组成和表示形式掌握字符串常用操作了解正则表达式的作用和语法规则掌握Perl兼容正则表达式函数的应用树立科技报国、为人民服务的远大理想增强法律意识,提高法治素养,增强民族自信心和凝聚力45
认识字符串5.1前面在2.2节介绍数据类型时,曾简单介绍过字符串,此处将详细介绍字符串的相关操作。65.1.1字符串简介5.1.2字符串表示形式7认识字符串5.1字符串简介5.1.18字符串是由数字、字母、下划线等组成的一串字符。此处所说的字符主要包括以下几种类型:数字字符,如1,2,3等。字母字符,如a,b,c等。特殊字符,如$,#,!,@等。转义字符,如\n(换行符)、\r(回车符)、\t(Tab字符)等。其中转义字符在输出时不显示,只能看到其所产生的格式化效果。9(实例位置:素材与实例\example\ph05\01)【例5-1】格式化输出字符串。实例代码如下:<?phpecho"ThisisaCharacterstring:\rabc_@123";?>字符串简介5.1.110运行结果如图5-1所示。本实例的换行效果在浏览器中不可见,需要查看源文件来查看转义字符的输出结果。在浏览界面单击鼠标右键,在弹出的快捷菜单中选择“查看源”,格式如图5-2所示。图5-1格式化输出字符串图5-2查看源文件字符串简介5.1.111字符串可以使用3种形式来表示:单引号(’)、双引号(”)和定界符(<<<)。此处要强调的一点是:在使用过程中一定要注意单引号与双引号的差异,任何变量在双引号中都会被转换为它的值进行输出显示;而单引号的内容则会被原样输出。具体可以参考【例2-3】的输出结果。字符串表示形式5.1.212
字符串常用操作5.213字符串操作在PHP编程中经常被用到,几乎所有PHP脚本的输入输出都要用到字符串。可以直接在函数中使用字符串,也可以将其存储在变量中。很多字符串操作都可以通过PHP内置函数来完成。5.2.1获取字符串长度5.2.2去除字符串的首尾空格和特殊字符5.2.3大小写转换5.2.4截取字符串5.2.5查找字符串5.2.6替换字符串14字符串常用操作5.2获取字符串长度5.2.115PHP中使用strlen()函数获取字符串长度,其语法格式如下:(实例位置:素材与实例\example\ph05\02)【例5-2】获取字符串长度。实例代码如下:<?phpechostrlen("ThisisaCharacterstring:\rabc_@123");?>intstrlen(string$str)16运行结果如图5-3所示。获取字符串长度5.2.1图5-3获取字符串长度17实际的网页制作中,常用strlen()函数获取并检测字符串长度。比如在用户注册时,可以用其检测用户输入密码的长度,如果长度小于6,则弹出提示信息,要求重新输入。获取字符串长度5.2.1汉字占两个字符,数字、英文、小数点、下划线和空格各占一个字符。知识库18去除字符串的首尾空格和特殊字符5.2.2用户在浏览器中输入数据时,往往会在无意中输入多余的空格,而在某些情况下,字符串中又不允许出现空格和特殊字符,此时就需要去除这些多余的空格和特殊字符。为此PHP提供了trim()、rtrim()和ltrim()函数,分别用于去除字符串两端空格、字符串尾部空格和字符串首部空格。191去除字符串首尾空格——trim()函数去除字符串的首尾空格和特殊字符5.2.2trim()函数用于去除字符串首尾空格和特殊字符,并返回去掉空格和特殊字符后的字符串。其语法格式如下: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))。202去除字符串右边空格——rtrim()函数去除字符串的首尾空格和特殊字符5.2.2rtrim()函数用于去除字符串右边的空格和特殊字符。其语法格式如下:stringtrim(string$str[,string$charlist="\t\n\r\0\x0B"]);3去除字符串左边空格——ltrim()函数ltrim()函数用于去除字符串左边的空格和特殊字符。其语法格式如下:stringltrim(string$str[,string$charlist]);21(实例位置:素材与实例\example\ph05\03)【例5-3】去除字符串空格。实例代码如下:<?php$str="HelloWorld!";echo$str."<br>";echotrim($str,"Hed!")."<br>";echortrim($str,"ld!")."<br>";echoltrim($str,"He")."<br>";?>去除字符串的首尾空格和特殊字符5.2.222运行结果如图5-4所示。去除字符串的首尾空格和特殊字符5.2.2图5-4去除字符串空格23大小写转换5.2.3在字符串操作过程中,通常需要对其大小写进行转换,此时可以使用大小写转换函数。常见大小写转换函数及其语法格式如下:stringstrtolower(stringstr);//转换为小写stringstrtoupper(stringstr);//转换为大写stringucfirst(stringstr); //整个字符串首字母大写stringucwords(stringstr); //整个字符串中以空格为分隔符的单词首字母大写24【例5-4】大小写转换。实例代码如下:<?php$str="IwantToFLY"; //定义字符串类型的变量
echostrtolower($str)."<br>";//输出转换为小写的字符串
echostrtoupper($str)."<br>";//输出转换为大写的字符串
echoucfirst($str)."<br>";//输出转换为首字母大写的字符串
echoucwords($str)."<br>"; //输出转换为单词首字母
//大写的字符串
echo$str; //输出原字符串?>大小写转换5.2.3(实例位置:素材与实例\example\ph05\04)25运行结果如图5-5所示。大小写转换5.2.3图5-5大小写转换26截取字符串5.2.4在PHP中,如果要截取某个字符串中指定长度的字符,可以使用substr()函数来实现。其语法格式如下:stringsubstr(string$string,int$start[,int$length])参数string为要操作的字符串。参数start为要截取的字符串的开始位置,若start为负数时,则表示从倒数第start开始截取length个字符;若start为0,则表示从字符串的第1个字符开始。可选参数length为要截取的字符串长度,若在使用时不指定该参数,则默认截取到字符串结尾。若length为负数,则表示从start开始向右截取到末尾倒数第length个字符的位置。27【例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>";?>(实例位置:素材与实例\example\ph05\05)截取字符串5.2.428运行结果如图5-6所示。截取字符串5.2.4图5-6字符串截取291strstr()函数查找字符串5.2.5strstr()函数用于搜索指定字符串在另一个字符串中的第一次出现,其语法格式如下:stringstrstr(string$haystack,mixed$needle)在PHP中,如果需要对字符串进行查找和检索操作,可以使用strstr()和strpos()函数。参数haystack为被搜索的字符串,参数needle为要搜索的字符串(指定字符串)。该函数返回自匹配点开始至被搜索字符串结尾的部分。如果未找到所搜索的字符串,则返回false。可以使用该函数获取上传图片的后缀,来限制上传图片的格式。知识库302strpos()函数strpos()函数用于检索字符串内指定的字符或文本。其语法格式如下:mixedstrpos(string$haystack,mixed$needle[,int$start])该函数将返回needle存在于haystack字符串中起始的字符位置(字符串位置从0开始,不是从1)。如果未找到匹配,则将返回false。可选参数start为开始搜索的位置。查找字符串5.2.531(实例位置:素材与实例\example\ph05\06)【例5-6】查找字符串。实例代码如下:<?php$str="IloveBeijingTiananmen!";echo"原字符串为:$str<br>";echostrstr($str,"Beijing")."<br>";echo"<hr>";echostrpos($str,"Beijing")."<br>";?>查找字符串5.2.532运行结果如图5-7所示。查找字符串5.2.5图5-7查找字符串33替换字符串5.2.6在PHP中,要对某字符串中的指定字符进行替换,可以使用字符串替换函数str_replace()来实现。其语法格式如下:mixedstr_replace(mixed$find,mixed$replace,mixed$subject[,int&$count])参数find为要查找的字符串,参数replace为用来替换的字符串,参数subject为被搜索的字符串,可选参数count为执行替换的数量。34【例5-7】替换字符串。实例代码如下:<?php$str="BJJQE/";echo"原字符串为:$str<br>";echo"替换字符串后:".str_replace('BJJQE','北京金企鹅',$str);?>(实例位置:素材与实例\example\ph05\07)替换字符串5.2.635运行结果如图5-8所示。替换字符串5.2.6图5-8替换字符串36替换字符串5.2.6该函数必须遵循以下规则:如果搜索的字符串是数组,那么它将返回数组。如果搜索的字符串是数组,那么它将对数组中的每个元素进行查找和替换。如果同时需要对数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余元素将用空字符串进行替换。如果查找的是数组,而替换的是字符串,那么替换字符串将对所有查找到的值起作用。37
正则表达式5.338用户在注册为某网站的会员时,经常需要输入用户名、电话号码等信息,偶尔输错时还会收到不合格验证信息,需要重新输入。对字符串的验证是一种常见的Web逻辑应用,是在服务器端脚本中用正则表达式实现的。5.3.1正则表达式简介5.3.2正则表达式的语法规则5.3.3Perl兼容正则表达式函数5.3.4测试正则表达式39正则表达式5.3正则表达式简介5.3.140正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符,及这些特定字符的组合,组成一个“规则字符串”,该“规则字符串”描述在查找文字主体时待匹配的一个或多个字符串。可以说,正则表达式是作为一个模板,将某个字符模式与所搜索的字符串进行匹配。正则表达式简介5.3.141接触过DOS的用户可能知道,如果想要匹配当前文件夹下所有的文本文件,可以输入“dir*.txt”命令,按【Enter】键后所有“.txt”文件都会被列出来。此处的“*.txt”即可理解为一个简单的正则表达式。在PHP中,正则表达式基本上有以下3个作用:判断给定字符串是否匹配正则表达式。用新文本替换匹配文本。将一个字符串拆分为一组更小的信息块,从字符串中获取其特定部分。正则表达式的语法规则5.3.242正则表达式由一些普通字符和一些元字符(特殊字符)以及模式修正符组成。正则表达式的语法规则5.3.243普通字符由所有那些未显式指定为元字符的打印和非打印字符(如换行符、回车符等)组成,包括所有的大小写字母字符、所有数字、所有标点符号及一些符号(双引号、单引号等)。1普通字符在最简单的情况下,一个正则表达式看上去就是一个普通的字符串。例如,正则表达式“testing”中没有包含任何元字符,它可以匹配“testing”和“testing123”等字符串,但是不能匹配“Testing”。正则表达式的语法规则5.3.244元字符是指在正则表达式中具有特殊意义的字符。要想真正用好正则表达式,必须正确理解元字符的应用。表5-1列出了常用元字符及对其的简单描述。(见书相应位置所示)2元字符只有连字符在字符组内部,并且出现在两个字符之间时,才能表示字符的范围;如果出现在字符组的开头,则只能表示连字符本身。提示正则表达式的语法规则5.3.245表5-2给出了反斜杠指定的预定义字符集。表5-2反斜杠指定的预定义字符集预定义字符集说
明\d匹配一个数字字符,等价于[0-9]\D匹配一个非数字字符,等价于[^0-9]\s匹配任何不可见字符,包括空格、制表符、换行符等,等价于[\f\n\r\t\v]\S匹配任何可见字符,等价于[^\f\n\r\t\v]\w匹配包括下划线的任何单词字符,类似但不等价于“[A-Za-z0-9_]”\W匹配任何非单词字符,等价于“[^A-Za-z0-9_]”正则表达式的语法规则5.3.246模式修正符的作用是规定正则表达式该如何解释和应用,PHP中的常用模式修正符如表5-3所示。表5-3PHP中的常用模式修正符3模式修正符修正符说
明i忽略大小写模式m多行匹配。仅当表达式中出现“^”“$”中的至少一个元字符且字符串有换行符时,“m”修饰符才起作用。“m”修饰符可以改变“^”为表示每一行的头部s改变元字符“.”的含义,使其可以代表所有字符(包括换行符),其他模式不能匹配换行符x忽略空白字符47“Perl兼容正则表达式(PerlCompatibleRegularExpression)”简称PCRE,也有称其为“PCRE兼容正则表达式”。Perl是一种编程语言,其字符处理功能非常强大,此处的PCRE就是使用了Perl的正则函数库。在PCRE中,表达式应被包含在定界符中,一般是斜线“/”。实现PCRE风格正则表达式的函数有7个,下面分别介绍。Perl兼容正则表达式函数5.3.3Perl兼容正则表达式函数5.3.348函数语法格式如下:1preg_grep()函数arraypreg_grep(string$pattern,array$input)函数preg_grep()返回一个数组,其中包括$input数组中与给定的$pattern模式相匹配的元素。对于数组$input中的每个元素,preg_grep()只进行一次匹配。49(实例位置:素材与实例\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);?>Perl兼容正则表达式函数5.3.350运行结果如图5-9所示。Perl兼容正则表达式函数5.3.3图5-9preg_grep()函数的应用Perl兼容正则表达式函数5.3.351preg_match()函数用于匹配字符串。其语法格式如下:2preg_match()和preg_match_all()函数intpreg_match(string$pattern,string$subject[,array&$matches])该函数在字符串subject中搜索与表达式pattern相匹配的内容,成功则返回整个模式匹配的次数(可能为零),出错则返回false。如果定义了数组matches,则将每次匹配的结果存储到该数组中。preg_match()第一次匹配成功后就会停止匹配,如果要实现全部结果的匹配,即搜索到subject结尾处,则需使用preg_match_all()函数。52(实例位置:素材与实例\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);?>Perl兼容正则表达式函数5.3.353运行结果如图5-10所示。Perl兼容正则表达式函数5.3.3图5-10使用preg_match()和preg_match_all()函数Perl兼容正则表达式函数5.3.354该函数可以对特殊字符进行自动转义,其语法格式如下:3preg_quote()函数stringpreg_quote(string$str[,string$delimiter])该函数给字符串str中的所有特殊字符前面加上一个反斜线,对其进行自动转义。如果定义了参数delimiter,则该参数所包含的字符串也将被转义,函数返回转义后的字符串。正则表达式的特殊字符包括:.\\+*?[^]$(){}=!<>|:。提示55(实例位置:素材与实例\example\ph05\10)【例5-10】对字符串进行自动转义。实例代码如下:<?php$k1="$40forag3/400";$k2=preg_quote($k1,"/");echo"原字符串:".$k1."<br>";echo"转义字符串:".$k2;?>Perl兼容正则表达式函数5.3.356运行结果如图5-11所示。Perl兼容正则表达式函数5.3.3图5-11将字符串自动转义Perl兼容正则表达式函数5.3.357preg_replace()函数用于正则表达式的搜索和替换,其语法格式如下:4preg_replace()函数mixedpreg_replace(mixed$pattern,mixed$replacement,mixed$subject[,int$limit])该函数在字符串subject中匹配表达式pattern,并将匹配项替换成字符串replacement。如果定义了参数limit,则替换limit次。上述参数除limit外都可以是一个数组。如果pattern和replacement都是数组,将以其键名在数组中出现的顺序来进行处理,这不一定和索引的数字顺序相同。如果使用索引来标识哪个pattern将被哪个replacement替换,应该在调用preg_replace()之前用ksort()函数对数组进行排序。58(实例位置:素材与实例\example\ph05\11)【例5-11】替换字符串。实例代码如下:<?php$k1="Thequickbrownfoxjumpedoverthelazydog.";
//定义变量$k2=preg_replace('/\s/','-',$k1); //定义变量,
//并将替换后的字符串赋给它echo"原字符串:".$k1."<br>";//输出字符串变量$k1echo"替换空格后的字符串:".$k2; //输出字符串变量$k2?>Perl兼容正则表达式函数5.3.359运行结果如图5-12所示。Perl兼容正则表达式函数5.3.3图5-12替换字符串Perl兼容正则表达式函数5.3.360preg_split()函数用于分割字符串,其语法格式如下:5preg_split()函数arraypreg_split(string$pattern,string$subject[,int$limit[,int$flags]])该函数返回一个数组,包含字符串subject经正则表达式pattern作为边界所分割出的子串。如果定义了参数limit,则最多返回limit个子串,如果limit是-1,则意味着没有限制,可以用来继续指定可选参数flags。61(实例位置:素材与实例\example\ph05\12)【例5-12】分割字符串。实例代码如下:<?php$str="phpmysql,apacheajax";//定义字符串变量$keywords=preg_split("/[\s,]+/",$str);//定义变量,
//并将分割后的字符串赋给它print_r($keywords);//输出分割后的字符串组成的数组?>Perl兼容正则表达式函数5.3.362运行结果如图5-13所示。Perl兼容正则表达式函数5.3.3图5-13分割字符串测试正则表达式5.3.463正则表达式的语法很难理解,且容易出错,即便是对经常使用的人来说也是如此。这就需要有一种工具来对其进行测试。RegexBuddy正好满足了这个需要。它可以容易地建立正确的正则表达式,清晰地推断复杂的正则表达式,还可以用给出的实例字符串或文件快速地进行测试匹配,从而有效避免在实际应用中出现错误。测试正则表达式5.3.464可以在网上下载RegexBuddy软件,其安装比较简单,此处不再赘述。启动RegexBuddy后,默认顶部显示正则表达式和前一次使用的历史,底部显示其他选项卡,分别是“Create”“Convert”“Test”“Debug”“Use”“Library”“GREP”和“Forum”,如图5-14所示。图5-14RegexBuddy默认界面
测试正则表达式5.3.465为便于使用,可以单击窗口右上方工具栏上的“View”按钮,在其下拉菜单中选择“SidebySideLayout”,这样可以最大限度地同时查看两个窗口,如图5-15所示。图5-15切换窗口显示方式测试正则表达式5.3.466接下来用RegexBuddy建立一个简单的正则表达式。在左上方的正则表达式区域输入“^[0-9]*$”,也就是只允许有数字的正则表达式,然后在“Test”区域输入测试文本:90652、hhh、45002、65hgf、56464(每输入一个换一行),并在“Test”区域左上角的下拉列表中选择“Linebyline”,如图5-16所示。图5-16测试正则表达式正则表达式区域历
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人才测评理论与方法学习通超星期末考试答案章节答案2024年
- 消防维护合同范本
- 2024绿化工程草坪铺装协议样本
- 辽宁省肿瘤医院招聘院编人员真题
- 租赁鱼塘合同范本
- 2023年云南省大理州第二人民医院招聘卫生专业技术人员考试真题
- 花呗相关合同范本
- 网管聘用合同范本
- 2023年福州闽江学院附属中学招聘教师考试真题
- 股份退让合同范本
- 球墨铸铁管、钢管顶管穿路施工方案
- GB/T 44672-2024体外诊断医疗器械建立校准品和人体样品赋值计量溯源性的国际一致化方案的要求
- 手术室课件教学课件
- 2024年新人教版一年级上册数学课件 四 11~20的认识 第7课时 解决问题
- 人教版2024八年级上册物理期中测试卷(含答案)
- 2024年普通高等学校招生全国统一考试·新课标卷(物理)附试卷分析
- 2024-2025学年北京版小学四年级上学期期中数学试题与参考答案
- 六年级上册道德与法治认识居民身份证人教部编版
- 新人教PEP版(三起)三年级上册英语全册课件(2024年新版教材)
- 音乐治疗导论智慧树知到答案2024年湖南科技大学
- 汽车行业新能源汽车动力系统技术创新方案
评论
0/150
提交评论