PHP程序设计基础第6章-字符串函数_第1页
PHP程序设计基础第6章-字符串函数_第2页
PHP程序设计基础第6章-字符串函数_第3页
PHP程序设计基础第6章-字符串函数_第4页
PHP程序设计基础第6章-字符串函数_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

字符串函数第六章目录01字符串的定义方法02字符串处理函数03什么是正则表达式05正则表达式语法04正则表达式的组成06PCRE兼容正则表达式函数01字符串的定义方法

使用单引号或双引号定义字符串

使用定界符定义字符串

010201字符串的定义方法<?php$str1="ILikePHP"; $str2='ILikePHP';echo$str1; echo$str2; ?>定义字符串在字符串中使用变量<?php$test="PHP";$str="ILike$test";$str1='ILike$test';echo$str;echo$str1; ?>01字符串的定义方法使用定界符定义字符串<?php$str=“再过一天";echo<<<strmark<fontcolor=“#FF0099”>$str就是周末了!</font>strmark;?><<<str

格式化文本str格式02字符串处理函数(1)strlen()函数strlen()函数用于获取字符串的长度。示例:strlen()函数的返回值类型是int整型。汉字占2个字符数字、英文、小数点、下划线和空格各占1个字符。echostrlen('abc'); //输出结果:3echostrlen(‘计算机网络'); //输出结果:10echostrlen('PHP'); //输出结果:502字符串处理函数(2)strrpos()函数strrpos()函数用于获取指定字符串在目标字符串中最后一次出现的位置,其中,目标字符串中第1个字符的位置从0开始。示例:strrpos()函数的返回值类型是int整型,但当找不到指定字符串时,返回值为布尔型false。第一个参数是目标字符串。第二个参数是指定字符串。echostrrpos('itcast','a');//输出结果:3echostrrpos('itcast','c',1);//输出结果:2echostrrpos('itcast','t',-4);//输出结果:102字符串处理函数(2)strrpos()函数第三个参数是字符串开始查找的位置,它有三种情况,具体如下:省略第三个参数时,表示从目标字符串的第0个位置开始向后查找指定字符串。第三个参数为正数n时,表示从目标字符串的第n个位置开始向后查找指定字符串。第三个参数为负数m时,表示从目标字符串的尾部第m个位置开始向前查找指定字符串。02字符串处理函数(3)substr()函数substr()函数用于获取字符串中的子串。示例:substr()函数的返回值类型是字符串型。substr()函数的第一个参数表示待处理的字符串。substr()函数的第二个参数表示字符串开始截取的位置,当它为负数m时,表示从待处理字符的结尾处向前数第m个字符开始。echosubstr('itcast',2); //输出结果:castechosubstr('itcast',0,2); //输出结果:itechosubstr('itcast',3,-1); //输出结果:asechosubstr('itcast',-4,-1); //输出结果:cas02字符串处理函数(3)substr()函数substr()函数的第三个参数表示截取字符串的长度,当其省略时,表示截取到字符串的结尾,当其为负数m时,表示从截取后的字符串的末尾处去掉m个字符。02字符串处理函数(4)str_replace()函数str_replace()函数用于字符串中的某些字符进行替换操作。示例:str_replace()函数的第一个参数表示目标字符串。str_replace()函数的第二参数表示替换字符串。str_replace()函数的第三个参数表示执行替换的字符串。str_replace()函数的第四个参数是一个可选的参数,用于保存字符串被替换的次数。echostr_replace('e','E','welcome',$count);//输出结果:wElcomEecho$count; //输出结果:202字符串处理函数(5)explode()函数explode()函数可以使用一个字符串分割另一个字符串。示例://①输出结果:array(3){[0]=>string(2)"ba"[1]=>string(1)"a"[2]=>string(1)"a"}var_dump(explode('n','banana'));//②输出结果:array(2){[0]=>string(2)"ba"[1]=>string(3)"ana"}var_dump(explode('n','banana',2));//③输出结果:array(1){[0]=>string(2)"ba"}var_dump(explode('n','banana',-2));//④输出结果:array(1){[0]=>string(6)"banana"}var_dump(explode('n','banana',0));//⑤输出结果:array(1){[0]=>string(6)"itcast"}var_dump(explode('p','itcast'));//⑥输出结果:bool(false)var_dump(explode('','itcast'));02字符串处理函数(6)implode()函数implode()函数用于指定的连接符将数组拼接成一个字符串。03什么是正则表达式正则表达式是一种描述字符串结构的语法规则,是一种特定的格式化模式,用于验证各种字符串是否匹配(Match)这个特征,进而实现高级的文本查找、替换、截取等操作。正则表达式在发展过程中出现了多种形式,一种是POSIX规范兼容的表达式,另一种是当Perl(一种功能丰富的编程语言)发展起来后,衍生出来的PCRE(Perl兼容正则表达式)库,使得许多开发人员将PCRE整合到自己的语言中,PHP中也未PCRE库的使用提供了相应的函数。03什么是正则表达式邮件的格式:tenssun@163.com其中tenssun是用户名,163.com是服务器名用户名只能由英文字母a~z(不区分大小写)、数字0~9、下划线组成。用户名的起始字符必须是英文字母.如:netease_2005用户名长度为5~20个字符。服务器名只能由英文字母a~z(不区分大小写)、数字0~9、下划线及点组成,@后点前面长度限制为1-10个字符,点后面的限制为com,cn,,net。03什么是正则表达式先写用户名的正则表达式^[a-zA-Z][0-9a-zA-Z_]{4,19}再写主机名的正则表达式[0-9a-zA-Z_]{1,10}(\.)(com|cn||net)$再把前后拼起来则为:^[a-zA-Z][0-9a-zA-Z_]{4,19}@[0-9a-zA-Z_]{1,10}(\.)(com|cn||net)$03什么是正则表达式<?php$email='wjj7r8y6@';

if(preg_match("^[a-zA-Z][0-9a-zA-Z_]{4,19}@[0-9a-zA-Z_]{1,10}(\.)(com|cn||net)$",$email)){echo'email格式正确';}?>04正则表达式的组成在PHP中,一个完整的正则表达式是由4部分内容组成的,分别为定界符、元字符、文本字符和模式修饰符。其中,定界符一般为“//”,并且定界符可以自己设置,只要保持前后一致即可;元字符是具有特定含义的字符;文本字符就是普通的文本,如字母和数字等。模式修饰符用于指定正则表达式以何种形式进行匹配,如i表示忽略大小写,x表示忽略空白字符等。注意:在编写正则表达式时,元字符和文本字符在定界符内,模式修饰符标记在结尾定界符之外。05正则表达式语法一、定位符和选择符1.定位符在程序开发中,经常需要确定字符在字符串中的具体位置。例如,匹配字符串的头部或尾部。^和$他们是分别用来匹配字符串的开始和结束。05正则表达式语法下面法举例说明"^The":开头一定要有"The"字符串;"ofdespair$":结尾一定要有"ofdespair"的字符串;那么,"^abc$":就是要求以abc开头和以abc结尾的字符串,实际上是只有abc匹配"notice":匹配包含notice的字符串你可以看见如果你没有用我们提到的两个字符(最后一个例子),就是说模式(正则表达式)可以出现在被检验字符串的任何地方,你没有把他锁定到两边(开始或结束)05正则表达式语法例:$subject=“It’sanicedaytoday”;//匹配字符串开始的位置preg_match(‘/^It/’,$subject,$matches);print_r($matches);//匹配字符串结束的位置preg_match(‘/today$/’,$subject,$matches);print_r($matches);05正则表达式语法2.选择符若要查找的条件有多个,只要其中一个满足即可成立时,可以使用选择符“|”。该字符可以理解为“或”。具体示例如下:"hi│hello":匹配含有"hi"或者"hello"的字符串;"(b│cd)ef":匹配含有"bef"或者"cdef"的字符串;"(a│b)*c":匹配含有这样多个(包括0个)a或b,后面跟一个c的字符串;05正则表达式语法例:<?phppreg_match_all(‘/34|56|78/’,’123456’,$matches);print_r($matches);?>05正则表达式语法二、字符范围与反斜线1.字符范围在正则表达式中,对于匹配某个范围内的字符,可以用中括号“[]”和连字符“-”来实现。且在中括号中还可以用反义字符“^”,表示匹配不在指定字符范围内的字符。05正则表达式语法示例说明匹配结果[abc]匹配字符a、b、c[^abc]匹配除a、b、c以外的字符[A-Z]匹配字母A-Z范围内的字符[^a-z]匹配字母a-z范围外的字符[a-zA-Z0-9]匹配大写字母、小写字母和数字0-9范围内的字符注意:字符“-”在通常情况下只表示一个普通字符,只有在表示字符范围时才作为元字符来使用。“-”连字符表示的范围遵循字符编码的顺序,如“a-Z”“z-a”“a-9”都是不合法的范围。05正则表达式语法1.反斜线在正则表达式中,“\”除了可作为转义字符外,还具有其他功能。字符说明\d任意一个十进制数字,相当于[0-9]\D任意一个非十进制数字\w任意一个单词字符,相当于[a-zA-Z0-9]\W任意一个非单词字符\s任意一个空白字符(如空格、水平制表符等)\S任意一个非空白字符\b单词分界符,如“\bgra”可以匹配”bestgrade”的结果为”gra”\B非单词分界符。如“\Bade”可以匹配”bestgrade”的结果为”ade”\xhh表示hh(十六进制2位数字)对应的ASCII字符,如“\x6”表示“a”05正则表达式语法三、字符的限定和分组1.点字符和限定符点字符“.”用于匹配一个任意字符,限定符(?、+、*、{})用于匹配某个字符连续出现的次数。05正则表达式语法字符说明示例结果.匹配一个任意字符p.P?匹配前面的字符零次或一次hone?y+匹配前面的字符一次或多次co+me*匹配前面的字符零次或多次co*me{n}匹配前面的字符n次ne{2}d{n,}匹配前面的字符最少n次ne{2,}d{n,m}匹配前面的字符最少n次,最多m次lug{0,2}05正则表达式语法例:如何使用正则完成一个11位数字组成的手机号的验证。要求手机号以1开头,第2位数字是3、4、5、7、8中的一个,胜于的数字可以是0-9之间的任意数字。05正则表达式语法2.贪婪与懒惰匹配当点字符和限定字符连用时,可以实现匹配指定数量范围的任意字符。例如,“^pre.*end$”可以匹配以pre开始到end结束,中间包含零个或多个任意字符的字符串。正则表达式在实现指定数量范围的任意字符匹配时,支持贪婪匹配和惰性匹配两种方式。所谓贪婪表示匹配尽可能多的字符,二惰性表示匹配尽可能少的字符。在默认情况下是贪婪匹配,若想要实现惰性匹配,需在上一个限定符的后面加上“?”符号。05正则表达式语法例://贪婪匹配preg_match(‘/p.*h/’,’phphphph’,$matches);print_r($matches);//懒惰匹配preg_match(‘/p.*?h/’,’phphphph’,$matches);print_r($matches);从上面示例可以看出,贪婪匹配时,会获取最先出现的p到最后出现的h,即可获得匹配结果为“phphphph”;懒惰匹配时,会获取最先出现的p到最先出现的h,即可获取匹配结果“ph”。05正则表达式语法3.括号字符在正则表达式中,括号字符“()”有两个作用:一是改变限定符的作用范围;二是分组。(1)改变限定符的作用范围①改变作用范围前正则表达式:firm|sh可匹配的结果:firm、sh②改变作用范围后正则表达式:fi(rm|sh)可匹配的结果:firm、fish05正则表达式语法(2)分组①分组前正则表达式:bana{2}可匹配的结果:banaa②分组后正则表达式:ba(na){2}可匹配的结果:banana05正则表达式语法例:以常见的“年-月-日”形式的日期格式匹配为例。其中,年份可以从1000到9999,月份从1到12,天数从1到31。不考虑复杂的同月份天数不同的问题。05正则表达式语法注:在正则表达式中还支持反向引用,如“\1”表示引用第1个小括号的匹配结果。反向引用,就是依靠子表达式的”记忆”功能,匹配连续出现的字串或是字符。如(dqs)(pps)\1\2,表示匹配字符串dqsppsdqspps。05正则表达式语法4.模式修饰符在PHP正则表达式的定界符外,还可以使用模式修饰符,用于进一步对正则表达式进行设置。模式符说明示例可匹配结果i模式中的字符将同时匹配大小写字母/con/iCon、con、cOn等m目标字符串视为多行/P.*/mPHP\nPCs将字符串视为单行,换行符作为普通字符/Hi.*my/sHi\nmyx将模式中的空白忽略/need/xneedA强制仅从目标字符串的开头开始匹配/good/A相当于/^good/D模式中$元字符仅匹配目标字符串的结尾/it$/D忽略最后的换行U匹配最近的字符串/<.+>/U匹配最近一个字符串05正则表达式语法在实际运行中,各种运算符会遵循优先级顺序,PHP中常用的正则表达式运算符优先级由高到低的顺序如下表所示。运算符说明\转义符()、(?:)、(?=)、[]括号和中括号*、+、?、{n}、{n,}、{n,m}限定符^、$、\任何元字符、任何字符定位点和序列|替换06PCRE兼容正则表达式函数1.preg_match()函数功能:进行正则表达式匹配语法:intpreg_match(stringpattern,stringsubject[,arraymatches[,intflags]])其中:第一个参数是正则表达式,第二个参数是被搜索的字符串,即在subject字符串中搜索与pattern给出的正则表达式相匹配的内容。06PCRE兼容正则表达式函数第3个参数用于以数组形式保存匹配到的结果。$matches[0]将包含与整个模式匹配的文本,$matches[1]将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。注意:preg_match()函数在正则匹配时,只要匹配到符合的内容,就会停止继续匹配。所以匹配结果要么是0次(没有匹配),要么是1次。第4个参数可以设置为“PREG_OFFSET_CAPTURE”,表示将第一次匹配到指定规则的内容所在位置的偏移量添加到$matches中,待查字符的开始位置从0开始计算。例如,字符串”abdbc”中的“a”的偏移量是0,“c”的偏移量是4。06PCRE兼容正则表达式函数2.preg_match_all()函数功能:与preg_match()函数的功能类似,区别在于preg_match()在第一次匹配成功后就停止查找,preg_match_all()函数会一直匹配到最后才停止,获取到所有相匹配的结果。语法:intpreg_match_all(stringpattern,stringsubject,arraymatches[,intflags])06PCRE兼容正则表达式函数3.preg_grep()函数功能:对于数组中的元素正则匹配,经常使用preg_grep()函数语法:arraypreg_grep(stringpattern,arrayinput)其中:第1个参数表示正则表达式模式,第2个参数表示待匹配的数组。在默认情况下,该函数的返回值是符合正则规则的数组,同时保留原数组中的键值关系。除此之外,该函数还可以将第3个参数设置为PREG_GREP_INVERT,获取不符合正则规则的数组。06PCRE兼容正则表达式函数例:<?php$arr=array('TomLucy','PHP','pigcat','C');$matches=preg_grep('/^[a-zA-Z]*$/',$arr);print_r($matches);?>06PCRE兼容正则表达式函数4.preg_replace()函数功能:通过正则表达式完成字符串的搜索和替换语法:mixedpreg_replace(mixedpattern,mixedreplacement,mixedsubject[,intlimit])preg_replace()函数首先会搜索第3个参数中符合第1个参数正则规则的内容,然后使用第2个参数进行替换。其中,第3个参数的数据类型决定着返回值的类型。06PCRE兼容正则表达式函数例1将字符串”hello,中国”中的hello替换为′你好pattern=′/hello/′;str=preg_replace(pattern,′你好′,str);例2去除字符串”gawwenngeeojjgegop”中连续相同的字母$str='gawwenngeeojjgegop';$pattern='/(.)\1/';$str=preg_replace($pattern,'',$str);06PCRE兼容正则表达式函数另外,正则的匹配规则和替换的内容都可以是数组类型。例:<?php$str='Thequickbrownfoxjumpsoverthelazydog.';$pattern=array('/quick/','/brown/','/fox/');$replace=array('slow','black','bear');echopreg_replace($pattern,$replace,$str);?>注意:正则匹配规则和替换内容是数组时,其替换的顺序仅与数组定义时编写的顺序有关,与数组的键名无关。06PCRE兼容正则表达式函数在使用preg_replace()函数实现正则匹配内容替换时,默认允许替换次数是所有符合规则的内容,其值是-1,表示无限次。另外,还可以根据实际情况设置允许替换的次数。例:<?php$str='abcd,dcba';$pattern='/b/';$replace='e';echopreg_replace($pattern,$replace,$str,1);?>06PCRE兼容正则表达式函数当需要替换的内容很多时,若需要了解preg_replace()函数具体完成了几次指定规则的替换,可以按照如下的方式实现。<?php$str='abcd,dcba';$pattern='/b/';$replace='e';echopreg_replace($pattern,$replace,$str,-1,$cou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论