第四章PHP字符串操作与正则表达式目的与要求理解字符串的定义掌握并熟练应用PHP中字符串的连接、分割、比较、查找和替换等操作掌握PHP的正则表达式操作4.1字符串的定义字符串:由零个或者多个字符组成的有限序列,也就是n(n=0)个字符的集合。功能:字符串最常用的功能是人机对话,告诉用户发生了什么,以及下一步需要做什么。书写格式:写在成对的单引号或双引号中。例:$text_a=”Thisisatestmessage”4.2字符串的格式化1.chop()函数语法:stringchop(string$string[,string$charlist])函数作用:去除字符串尾部的空格等特殊字符,如果指定了第2个参数,则去除字符串尾部中的由第2个参数指定的字符。例:echochop(“I’maphpprogrammer.”);2.ltrim()函数语法:stringltrim(string$str[,string$charlist])函数作用:去除字符串头部的空格等特殊字符,如果指定了第2个参数,则去除字符串头部中的由第2个参数指定的字符。例:echoltrim(“I’maphpprogrammer.”);3.trim()函数语法:stringtrim(string$str[,string$charlist])函数作用:去除字符串头部和尾部的空格等特殊字符,如果指定了第2个参数,则去除字符串头部和尾部中的由第2个参数指定的字符。例:echotrim(“I’maphpprogrammer.”);4.2.2addslashes()和stripslashes()addslashes()函数语法:stringaddslashes(stringstr)函数作用:使用反斜线引用字符串。例:echoaddslashes(“BlindMan’sHoliday”);stripslashes()函数语法:stringstripslashes(string)函数作用:与addslashes()相反,把转义符取消例:echostripslashes(“who\’sKaijim?”);strtoupper()函数语法:stringstrtoupper(string$string)函数作用:将字符串string的字母全部以大写字母的形式返回例:echostrtoupper(“PHPer”);strtolowerr()函数语法:stringstrtolower(string$string)函数作用:将字符串string的字母全部以小写字母的形式返回例:echostrtolower(“PHPer”);4.3字符串的连接和分割explode()函数语法:arrayexplode(string$separator,string$string[,int$limit])函数作用:将字符串string用$separator来分割,每出现一次$separator,就多出一个由两个$separator之间的字符组成的字符串元素,函数最后的返回值是一个数组。implode()和join()这两个函数是explode()反功能的函数。函数语法:stringimplode(string$glue,array$pieces)函数作用:把数组的各元素合称为一个用$glue连接起来的字符串。例:implode(“,”,$area)strtok()使用strtok()函数可以将一个大字符串切割成小的字符串。函数语法:stringstrtok(string$str,string$token)函数作用:字符串$str用字符串$token的值切开成小段小段的字符串,返回$token第一次出现前的部分子字符串substr()函数语法:stringsubstr(string$string,int$start[,int$length])函数作用:取得字符串$string从$start开始的$length长度的子字符串,如果没有$length参数,则取到$string的最后一个字符。注意:$string字符串的各字符位置从0开始4.7正则表达式简介正则表达式(regularexpression)用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。首先正则表达式是一个字符串,在这个字符串内,可以设定一些规则,正则表达式就可以根据已经设定好的内容,对指定的字符串进行替换或匹配操作。如:“ab+”描述的特征一个a和任意个b,ab、abb、abbbb正则表达式的用途验证字符串是否符合指定特征用来查找字符串用来替换如:验证邮件地址Abc@yiboit.com?正则表达式的构成普通字符例如:大写、小写字母、所有数字、所有标点符号非打印字符例如:\f\n\r\s特殊字符(又称元字符)$()*+?^{|例如:“*”表示任何字符串PhP中正则表达式的写法:“/expression/”下面列出几个简单的正则表达式。\d{6}:表示一个由6位数字组成的字符串。[A-Za-z0-9]:匹配所有大写字母、小写字母及0到9的数字。^open:表示以open开始的字符串。something$:表示以something结尾的字符串。^[a-zA-Z]:表示一个以字母开头的字符串。go{2}:表示字母g后面跟着2个o即:goo。常用特殊字符(1)“^”插入符/^first/表示检测字符串是否以first开头(2)“$”美元符/end$/表示检测字符串是否以end结尾(3)”.”点号。点号是用来匹配除了换行符之外的任意字符/e.d/表示检测字符串是否匹配字符e加一个任意字符和字符d(4)”-”短横线。短横线被称为范围界定字符/[0-9]/表示字符串是否匹配任何数字[^0-9]非数字(5)”|”管道元字符/(a|b)/表示字符串含有字符a或字符b(6){n,m}这里的n和m都是正整数。匹配至少n个最多m个前面的字符。例如:/a{1,3}/匹配“candy,”中的‘a’,“caandy,”中的前面两个。\w意义:匹配所有的数字和字母以及下划线,等价于[A-Za-z0-9_]。\W意义:匹配除数字、字母外及下划线外的其它字符,等价于[^A-Za-z0-9_]。\d匹配一个数字字符。等价于[0-9]。\D匹配一个非数字字符。等价于[^0-9]。$pattern=“/aa/i”;i表示不区别大小写\n意义:匹配一个换行符\r意义:匹配一个回车符PHP的正则表达式操作字符匹配:preg_match();如果匹配,返回1,也就是true,否则返回0,也就是false.$aa=preg_match(/hi/,fdfhi,china”);echo$aa;//1字符替换:preg_replace()echopreg_replace(“/hi/i”,“zuoyefeng”,“HI,chinaphp”);//zuoyefeng,czuoyefengnaphpi表示不区别大小写获得与模式匹配的数组单元Preg_grep函数语法:arraypreg_grep(string$pattern,array$input[,int$flags])函数说明:返回一个包括了input数组中与给定的pattern模式相匹配单元的新数组。进行全局正则表达式的匹配函数语法:intpreg_match_all(string$pattern,string$subject,array$matches[,int$flags])函数说明:在subject中搜索所有与pattern给出的正则表达式匹配的内容,并将结果以上flags指定的顺序放到数组matches中。搜索到第一个匹配项之后,接下来的搜索从上一个匹配项末尾开始。进行正则表达式的匹配preg_match函数语法:intpreg_match(string$pattern,string$subject[,array$matches[,int$flags]])函数说明:在subject字符串中搜索与pattern给出的正则表达式相匹配的内容。如果提供了matches,则它会被搜索的结果所填充。$aa=preg_match(/hi/,fdfhi,china”,$word);echo$aa;//1Print_r($word);转义正则表达式:preg_quote函数语法:stringpreg_quote(string$str[,string$delimiter])函数说明:以str为参数并给其中每个属于正则表达式语法的字符前面加上一个反斜线。如果需要以动态生成的字符串作为模式去匹配,则可以用此函数转义其中可能包含的特殊字符。执行正则表达式的搜索和替换函数:preg_replace函数语法:mixedpreg_replace(mixed$pattern,mixed$replacement,mixed$subject[,int$limit])函数说明:在subject中搜索pattern模式的匹配项并替换为replacement。如果指定里limit,则仅替换limit个匹配,如果省略limit或者其值为-1,则所有的匹配项都会被替换。$a=hi,china;echopreg_replace(/hi/,hello,$a);通过回调函数执行搜索和替换:preg_replace_callback函数语法:mixedpreg_replace_callback(mixed$pattern,callback$callback,mixed$subject[,int$limit])函数说明:以目标字符串中的匹配数组作为输入参数,并返回用于替换的字符串。用正则表达式进行字符串分割:preg_split函数语法:arraypreg_split(string$pattern,string$subject[,int$limit[,int$flags]])函数说明:返回一个数组,包含subject中沿着与pattern匹配的边界所分割的子串。如果指定了limit,则最多返回limit个子串,如果limit是-1,则意味着没有限制,可以用来继续指定可选参数flags。4.9正则表达式的Web验证电子邮件地址的校验多字节字符的校验URL地址的校验电话号码和邮政编码的校验验证手机号码?php$tel=13904459898;$ab=preg_match(/^13[0-9]{9,9}$/,$tel);/*说明:^表示这符开始(元字符)$表示字符结尾(元字符)13为普通字符[0-9]表示一个0-9的数字{9}表示匹配9次表意:后面的号码,如果是13开头的,中间有9个数字,并结尾,则符合条件*/if($ab)echo找到了;elseecho没找到!!;?